我正在使用EF 4.1&使用DB第一种方法。我也创建了我的.edmx文件。 现在我想创建我的POCO课程。
为此,我已经从NuGet安装了EF 4.x DbContext Generator以及EF 4.x POCO实体生成器。
我完全知道建议使用DbContext for EF 4.1+,因为它是从ObjectContext派生的。但是,我仍然使用EF 4.x POCO实体生成器和放大器生成我的POCO类。然后也是EF 4.x DbContext Generator。
编辑:找到此ADO.NET DbContext Generator vs. ADO.NET Poco Entity Generator (ObjectContext)
在任何一种情况下,它都会生成.Context.tt& Model.tt文件。那么这两种工具生成的文件的确切区别是什么?为什么建议在EF 4.1+上使用DbContext?
我也想知道ObjectContext的限制。
答案 0 :(得分:17)
DbContext是更新的API,可以在使用大多数常见任务时提升开发人员的体验 - 只需更好地设计API,但您仍需从ObjectContext
获取DbContext
并使用旧API,如果您愿意使用一些更复杂的功能。如果您计划将来将EF升级到5.x或6.x,使用DbContext可能会更容易,因为这是ADO.NET团队所推荐的。
就生成器而言,EF 4.x POCO生成器创建了更复杂的类,这些类在内部使用关系修复。当与延迟加载一起使用时,此功能证明本身效率很低,因此较新的EF DbContext生成器不使用它。
附注:完全支持从一个API到另一个API的代码转换:
DbContext
构造函数接受ObjectContext
从ObjectContext API移至DbContext API IObjectContext
适配器从DbContext API移至ObjectContext API