Entity Data Model 是一个概念模型,所有Entity SQL和LINQ to Entities 查询将最终转化为T-SQL的脚本,从数据库中查询数据。与LINQ to SQL比较而言,ObjectContext 类没有提供Log属性或者通用的log机制,因此,无法在Visual Studio 中跟踪所有的T-SQL语句。
如果你想查看所有执行的T-SQL语句你需要使用SQL Server的Profiler 工具.或者EntityCommand和ObjectQuery类都有一个ToTraceString() 方法,第三种就是微软也提供了一个免费的工具来帮助学习Entity SQL。
eSqlBlast 的下载地址(含有源代码,需要自己编译一下)及其相关介绍(eSqlBlast for VS 2008 SP1):
http://code.msdn.microsoft.com/esql/Release/ProjectReleases.aspx?ReleaseId=991
而此工具在使用时需要获取3个元数据文件(CSDL/SSDL/MSL)。而刚才的选项可以生成此三个元数据文件。
此项目中的app.config文件里包含了EF在运行时需要的连接字符串,这个暂时不需要,但不要删除。后面在运行时还是需要的。
到此为止,我们实现的数据访问层的处理。是不是很简单。下面我们来讲一下业务层的处理。
当然我们这里的业务很简单,不存在一些逻辑的计算。只是调用数据访问层来实现Employee对象的增删改查。
再增加一个类库Demo. BusinessManagers.同时添加Demo.EDM的引用。
代码如下:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.Text;
using Demo.EDM;
using System.Data.EntityClient;
namespace Demo.BusinessManagers
{
public class EmployeeManager:IDisposable
{
newwideEntities context;
public EmployeeManager()
{
context = new newwideEntities();
}
public void Add(Employee emp)
{
context.AddToEmployees(emp);
context.SaveChanges();
}
public void Update(Employee emp)
{
context.Attach(emp); //不是新增。因此先附加
emp.SetAllModified(context); //由于此emp对象是客户端上传上来的。附加后,对象的状态不存在更新标记。因此这里设置其为更新状态。如果不更改状态,则不会生成相应的SQL
context.SaveChanges();
}
public void Delete(Employee emp)
{
//如果要删除一个对象的话,先附加此对象,因为EF有个跟踪机制存在。如果不这样处理,则只能先select first 再delete 这样会引起二次SQL语句
context.Attach(emp);
context.DeleteObject(emp);
context.SaveChanges();
}
public List<Employee> GetEmployees()
{
return context.Employees.ToList();
}
#region IDisposable 成员
public void Dispose()
{
context.Dispose();
}
#endregion
}
public static class EFExtension
{
//通知对象的属性状态改变
public static void SetAllModified<T>(this T entity, ObjectContext context) where T : IEntityWithKey
{
var stateEntry = context.ObjectStateManager.GetObjectStateEntry(entity.EntityKey);
var propertyNameList = stateEntry.CurrentValues.DataRecordInfo.FieldMetadata.Select(pn => pn.FieldType.Name);
foreach (var propName in propertyNameList)
{
stateEntry.SetModifiedProperty(propName);
}
}
}
}
好了。这样我们就可以实现EMPLOYEE的基本处理了。下一次,我们将实现关于员工的WCF服务。以便客户端能订阅该服务并调用
相关推荐
在WCF+EF的示例中,MVP模式可能被用来实现用户界面与服务层之间的解耦。 在这个示例程序中,`Employees.sql`文件可能是用于创建数据库的SQL脚本,包含了一些预定义的员工数据或者用于初始化数据库结构的命令。这与...
标题中的"DevExpress+WindowsService+WCF+EF+SQL"是一个集成的开发框架,结合了多个技术,用于构建高效的企业级应用程序。以下是对这些技术及其在框架中作用的详细解释: 1. DevExpress:DevExpress是一个全面的...
在“WPF+WCF+EF框架实例”中,这三个技术的结合为开发人员提供了一个完整的解决方案,用于构建数据驱动的、具有分布式特性的桌面应用程序。WPF负责前端的用户交互,展示数据和接收用户输入;WCF作为中间层,负责处理...
【标题】"EF+WCF+WPF(MVVM)" 框架简单示例 这是一个集成Entity Framework(EF)、Windows Communication Foundation(WCF)和Windows Presentation Foundation(WPF)的项目,利用Model-View-ViewModel(MVVM)设计...
基于Entity Framework Code First, WCF, MVC3 的网上商店demo
1. **创建数据模型**:在EF中定义实体类,这些类对应于数据库中的表。 2. **配置数据库上下文**:创建一个继承自DbContext的类,定义与数据库的连接以及实体类的映射。 3. **建立WCF服务**:定义服务接口和实现,...
本文将深入探讨“WCF+Winform Demo”这一主题,这是一套整合了Windows Communication Foundation(WCF)和Windows Forms(Winform)技术的示例应用,旨在展示如何利用WCF服务来承载业务逻辑,并通过Winform客户端...
在IT行业中,构建高效、可扩展的软件系统是至关重要的,而基于EF(Entity Framework)+WCF(Windows Communication Foundation)的通用三层架构是实现这一目标的常见方式。本项目展示了如何利用这两种技术来构建一个...
在IT行业中,构建高效、可扩展的软件系统是至关重要的,而"基于EF+WCF的通用三层架构源码及解析"则提供了一种实用的方法来实现这一目标。本项目利用Entity Framework(EF)4.3作为数据访问层,Windows Communication...
描述中提到的“一个学习WCF+LINQ+WPF很好的一个范例”,进一步强调了该项目的教育价值,适合那些希望深入理解并实战这四个关键的Microsoft .NET Framework组件的开发者。 **知识点详解** 1. **Windows ...
【WCF开发实战系列】是针对Windows Communication Foundation(WCF)技术的一系列教程,旨在指导开发者逐步学习如何创建和使用WCF服务。WCF是微软提供的一种用于构建分布式应用程序的框架,它允许服务提供商和消费者...
通常,WCF服务作为中间层,处理客户端请求并调用数据访问层,这个数据访问层由Entity Framework提供。以下是一个简单的流程: 1. **客户端请求**:ASP.NET Web应用的客户端发送请求到WCF服务。 2. **WCF服务处理**...
WCF开发实战系列一:创建第一个WCF服务 WCF开发实战系列二:使用IIS发布WCF服务 WCF开发实战系列三:自运行WCF服务 WCF开发实战系列四:使用Windows服务发布WCF服务 WCF开发实战系列五:创建WCF客户端程序
标题“WCF+WEB+WPF”和描述“WCF WEB WPF WinFrom承载”涉及了四个关键概念:Windows Communication Foundation (WCF),Web技术,Windows Presentation Foundation (WPF)以及WinForms。这些都是微软.NET框架下的核心...
在“WCF+WinForm的基础小例子”中,我们可以预见到以下几个关键知识点: 1. **创建WCF服务**:首先,你需要创建一个WCF服务项目,定义服务接口和实现。服务接口通常包含一系列操作合同,这些合同定义了服务可以执行...
结合WCF和EF,我们可以构建一个三层架构的应用程序:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。在**WCF通讯**中,服务作为业务逻辑层的接口,接收客户端请求并调用BLL进行处理。BLL再通过EF与数据库进行...
标题"EF6.0+WCF+CodeFirst+SqlServer 对初学者帮助很大"揭示了本文将深入探讨四个关键的IT技术:Entity Framework 6.0(简称EF),Windows Communication Foundation(WCF),CodeFirst开发模式以及Microsoft SQL ...
**WCF(Windows Communication Foundation)**是微软推出的一种面向服务的通信框架,它提供了一种统一的方式来构建分布式应用程序。在本实例中,WCF作为服务端,负责处理数据的读取和提供给客户端。 **Silverlight*...
在标题提及的“WCF+mvc程序”中,我们可以推断这是一个使用ASP.NET MVC架构开发的小型应用程序,该程序集成了WCF服务以实现特定功能。开发者可能通过在MVC控制器中调用WCF服务,获取或更新数据,然后将这些数据传递...
**WCF(Windows Communication Foundation)**是微软推出的一种面向服务的通信框架,它提供了一种统一的方式来构建分布式应用程序。在本示例中,WCF被用于创建一个聊天室应用程序,利用了**NetTcpBinding**这一高级...