Entity framework 4 与实体框架4抗争

Entity framework 4 与实体框架4抗争,entity-framework-4,Entity Framework 4,请告诉我如何用ef4方式处理积垢。我在asp.NETMVC1和EFV1.NET3.5SP1上启动了一个项目,但在VS2010发布后,我在阅读了这两种技术提供的新功能后,将应用程序转换为asp.NETMVC2和ef4.net4 现在我有点库存,因为事情不像我想的那么容易,项目的最后期限很快就要到了。我将非常感谢您的帮助,主要是关于如何创建、更新和删除数据库,而不必在不需要的地方进行数据库访问 我找到了一种处理CRUD命令的方法,但这种方法的问题是它会覆盖数据库中所有未更改的值和数据库生成的值(ge

请告诉我如何用ef4方式处理积垢。我在asp.NETMVC1和EFV1.NET3.5SP1上启动了一个项目,但在VS2010发布后,我在阅读了这两种技术提供的新功能后,将应用程序转换为asp.NETMVC2和ef4.net4

现在我有点库存,因为事情不像我想的那么容易,项目的最后期限很快就要到了。我将非常感谢您的帮助,主要是关于如何创建、更新和删除数据库,而不必在不需要的地方进行数据库访问

我找到了一种处理CRUD命令的方法,但这种方法的问题是它会覆盖数据库中所有未更改的值和数据库生成的值(getutcdate().etc),并且不适用于对象图(对象关系)。关于如何把事情做好,有什么快速的建议吗? 更新命令的代码如下所示

dc.PersonEntitySet.Attach(entity);ObjectStateEntry entry = dc.ObjectStateManager.GetObjectStateEntry(entity);entry.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
我目前正在客户端上使用POCO,并在执行ef操作之前在DAL上将其手动转换为实体框架实体


谢谢

尝试使用EF4 poco模板。但为了更好地跟踪更改,我会使用自跟踪实体。

  • 使用ADO.Net数据模型创建数据模型程序集(使用规范化数据库)

  • 删除所有导航属性(如果数据库使用大量外键关系完全规范化,则最好这样做)

  • 将默认代码生成设置更改为“无”,并将元数据工件属性更改为“复制到输出目录” (这将在bin文件夹中生成模式文件,您可以将其复制到DAL或WCF中 它有助于代码隔离)

  • 使用ADO.NETPOCO生成器生成POCO类

  • 保存edmx文件并生成部件。 (保存设计器页面并关闭刷新代码)

  • 将代码文件复制到单独的程序集数据传输对象 这将是您引用实体的类型; 您可以在BLL、DAL和WCF中使用它们

  • 在DTO组件中,删除了关键字“virtua”。 这将防止EF超过生成的代码

  • 创建DAL(数据访问层)作为单独的程序集。(添加对System.Data.Entity的引用非常重要,否则上下文将无法访问) 最好将DAL隔离

  • 将上下文文件复制到DAL中;添加对DTO组件的引用; 将3个架构文件从DM bin文件夹复制到此程序集的bin文件夹

    您将受益于代码隔离;当需要添加更多实体或存储的进程时,只需复制代码文件并替换3个模式文件

  • 创建另一个名为BLL(业务逻辑层)的程序集,并添加对DTO和DAL程序集的引用; 将3个模式文件从数据模型bin文件夹复制到此bin文件夹;构建BLL组件

    将业务逻辑隔离总是好的

  • 创建引用BLL和DTO的WCF服务 因为DTO中的类型是基元类型,所以所有序列化都由WCF负责

  • 如果您使用win forms客户端,请添加服务引用; 这带来了可以在编译时使用的实体

希望这有帮助