`
javababy1
  • 浏览: 1220438 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WCF+Ef实战系列二:EF实体的构建及数据业务层的处理

阅读更多
本文主要讲述业务层和数据处理层的实现。由于我们使用了EF,则本身就实现了数据层的操作。因此我们首先要做的事就是构建EF模型。

第一步我们来创建相关的数据库NewWide,里面有一张表Employees,如下图

列名

数据类型

可为空

长度

OID

Int

主键 自动增长

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

UserCode

Nvarchar

10

UserName

Nvarchar

20

PWD

Nvarchar

40

IsAdmin

Bit

有关EF建模及其理论的部分,可以参考如下:

http://www.cnblogs.com/foundation/ ADO.NET Entity Framework系列的5篇文章。在此我就不再废话了。但是有一点基本常识就是在建模时表一定要有主键.

建立一个项目如Demo.EDM.同时添加一个新项Ado.NET Entity Data Model.

选择从数据库生成,

选择你需要的结构,如表,Sp等。这里由于是DEMO,因此只选择Employees表。当然如果你以后在数据库里添加了新的对象,那你可以通验证EDM来导入新的对象。最终设计器显示为

已帮我们生成了我们所需要的模型了。你可以对些模型进行修改。当然是右键属性设置了。如设为不可为空,或映射名等。这里我不做修改了。http://www.cnblogs.com/foundation/ 的文章已说的很详细了。不理解的话可以再去看看。

在上图我们可以看到生成的模型对象的名称为Employees.这个是会让人误解的。因为我们一般实体对象是单数形式,而集合对象才以复式存在的。如员工应该是Employee,而员工集合才是Employees.因此只里我们需要改动一下。

关于MyEDM.edmx这个还有个属性值得注意的,就是元数据项目处理这块,你可以选择复制到输出目录。

Entity Data Model 是一个概念模型,所有Entity SQLLINQ to Entities 查询将最终转化为T-SQL的脚本,从数据库中查询数据。与LINQ to SQL比较而言,ObjectContext 类没有提供Log属性或者通用的log机制,因此,无法在Visual Studio 中跟踪所有的T-SQL语句。

如果你想查看所有执行的T-SQL语句你需要使用SQL ServerProfiler 工具.或者EntityCommandObjectQuery类都有一个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实战示例程序

    在WCF+EF的示例中,MVP模式可能被用来实现用户界面与服务层之间的解耦。 在这个示例程序中,`Employees.sql`文件可能是用于创建数据库的SQL脚本,包含了一些预定义的员工数据或者用于初始化数据库结构的命令。这与...

    DevExpress+WindowsService+WCF+EF+SQL

    标题中的"DevExpress+WindowsService+WCF+EF+SQL"是一个集成的开发框架,结合了多个技术,用于构建高效的企业级应用程序。以下是对这些技术及其在框架中作用的详细解释: 1. DevExpress:DevExpress是一个全面的...

    WPF+WCF+EF框架实例

    在“WPF+WCF+EF框架实例”中,这三个技术的结合为开发人员提供了一个完整的解决方案,用于构建数据驱动的、具有分布式特性的桌面应用程序。WPF负责前端的用户交互,展示数据和接收用户输入;WCF作为中间层,负责处理...

    EF+WCF+WPF(MVVM)

    【标题】"EF+WCF+WPF(MVVM)" 框架简单示例 这是一个集成Entity Framework(EF)、Windows Communication Foundation(WCF)和Windows Presentation Foundation(WPF)的项目,利用Model-View-ViewModel(MVVM)设计...

    EF + WCF + MVC3 OnlineShop 源码

    基于Entity Framework Code First, WCF, MVC3 的网上商店demo

    silverlight+wcf+EF

    1. **创建数据模型**:在EF中定义实体类,这些类对应于数据库中的表。 2. **配置数据库上下文**:创建一个继承自DbContext的类,定义与数据库的连接以及实体类的映射。 3. **建立WCF服务**:定义服务接口和实现,...

    WCF+Winfrom Demo

    本文将深入探讨“WCF+Winform Demo”这一主题,这是一套整合了Windows Communication Foundation(WCF)和Windows Forms(Winform)技术的示例应用,旨在展示如何利用WCF服务来承载业务逻辑,并通过Winform客户端...

    分享基于EF+WCF的通用三层架构及解析

    在IT行业中,构建高效、可扩展的软件系统是至关重要的,而基于EF(Entity Framework)+WCF(Windows Communication Foundation)的通用三层架构是实现这一目标的常见方式。本项目展示了如何利用这两种技术来构建一个...

    基于EF+WCF的通用三层架构源码及解析

    在IT行业中,构建高效、可扩展的软件系统是至关重要的,而"基于EF+WCF的通用三层架构源码及解析"则提供了一种实用的方法来实现这一目标。本项目利用Entity Framework(EF)4.3作为数据访问层,Windows Communication...

    WCF+LINQ+WPF+WWF很好的一个范例

    描述中提到的“一个学习WCF+LINQ+WPF很好的一个范例”,进一步强调了该项目的教育价值,适合那些希望深入理解并实战这四个关键的Microsoft .NET Framework组件的开发者。 **知识点详解** 1. **Windows ...

    WCF开发实战系列

    【WCF开发实战系列】是针对Windows Communication Foundation(WCF)技术的一系列教程,旨在指导开发者逐步学习如何创建和使用WCF服务。WCF是微软提供的一种用于构建分布式应用程序的框架,它允许服务提供商和消费者...

    asp.net+wcf+entity framework

    通常,WCF服务作为中间层,处理客户端请求并调用数据访问层,这个数据访问层由Entity Framework提供。以下是一个简单的流程: 1. **客户端请求**:ASP.NET Web应用的客户端发送请求到WCF服务。 2. **WCF服务处理**...

    WCF开发实战

    WCF开发实战系列一:创建第一个WCF服务 WCF开发实战系列二:使用IIS发布WCF服务 WCF开发实战系列三:自运行WCF服务 WCF开发实战系列四:使用Windows服务发布WCF服务 WCF开发实战系列五:创建WCF客户端程序

    WCF+WEB+WPF

    标题“WCF+WEB+WPF”和描述“WCF WEB WPF WinFrom承载”涉及了四个关键概念:Windows Communication Foundation (WCF),Web技术,Windows Presentation Foundation (WPF)以及WinForms。这些都是微软.NET框架下的核心...

    WCF+WINFORM的基础小例子

    在“WCF+WinForm的基础小例子”中,我们可以预见到以下几个关键知识点: 1. **创建WCF服务**:首先,你需要创建一个WCF服务项目,定义服务接口和实现。服务接口通常包含一系列操作合同,这些合同定义了服务可以执行...

    WCF,EF框架

    结合WCF和EF,我们可以构建一个三层架构的应用程序:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。在**WCF通讯**中,服务作为业务逻辑层的接口,接收客户端请求并调用BLL进行处理。BLL再通过EF与数据库进行...

    EF6.0+WCF+CodeFirst+SqlServer 对初学者帮助很大

    标题"EF6.0+WCF+CodeFirst+SqlServer 对初学者帮助很大"揭示了本文将深入探讨四个关键的IT技术:Entity Framework 6.0(简称EF),Windows Communication Foundation(WCF),CodeFirst开发模式以及Microsoft SQL ...

    Wcf+Silvert+DataGrid从数据库读取数据呈现

    **WCF(Windows Communication Foundation)**是微软推出的一种面向服务的通信框架,它提供了一种统一的方式来构建分布式应用程序。在本实例中,WCF作为服务端,负责处理数据的读取和提供给客户端。 **Silverlight*...

    wcf+mvc程序

    在标题提及的“WCF+mvc程序”中,我们可以推断这是一个使用ASP.NET MVC架构开发的小型应用程序,该程序集成了WCF服务以实现特定功能。开发者可能通过在MVC控制器中调用WCF服务,获取或更新数据,然后将这些数据传递...

    WCF + NetTcpBinding 聊天室应用程序

    **WCF(Windows Communication Foundation)**是微软推出的一种面向服务的通信框架,它提供了一种统一的方式来构建分布式应用程序。在本示例中,WCF被用于创建一个聊天室应用程序,利用了**NetTcpBinding**这一高级...

Global site tag (gtag.js) - Google Analytics