ADO.NET DbContext Generator与ADO.NET Poco实体生成器(ObjectContext)

时间:2011-03-17 15:10:29

标签: entity-framework entity-framework-4 entity-framework-4.1

我即将开始实施一个项目的数据访问基础设施,该项目采用DDD方法构建(这是我第一次尝试DDD,所以要温和; - ))。

我将使用Entity Framework。到目前为止,我正在研究Julie Lerman在她的好书Programming Entity Framework上教授的方法,其中使用了 ADO.NET POCO实体生成器 ,更改了T4模板和更多自定义代码 今天我开始使用 数据库优先 方法阅读有关EF4.1和 ADO.NET DbContext Generator 的文章,而我正在决定应该去哪一个。

DbContext和EF4.1的DDD方法似乎比POCO实体更好,更清晰,但我担心它会在不久的将来导致一些问题,因为EF4.1仍然在RC中。 / p>

来自ADO.NET team blog,我知道EF4.1 包括:

  • Enum支持
  • 空间数据类型支持
  • Code First中的存储过程支持
  • Code First中的迁移支持
  • Code First中的可自定义约定

根据我的理解,由于我将使用 数据库优先 ,因此未包含的功能数量较少。

总之,我的问题是:
我可以用EF4.1 DbContext Generator替换 POCO实体生成器吗?

1 个答案:

答案 0 :(得分:54)

clean 创建POCO实体的角度来看,两个生成器之间没有区别。两个生成器都生成相同的实体,但是,ADO.NET POCO实体生成器基于ObjectContext的API,而ADO.NET DbContext生成器基于DbContext的API。 / p>

DbContext的API有一些非常好的新功能(本地,导航属性查询等),并且API在某种程度上被简化,但同时看起来在DbContext API中缺少ObjectContext API中使用的某些功能(或者至少它还没有被充分探索过)。

EF 4.1 RC即上线版。这意味着您可以使用它构建一个真实的应用程序,因为API不会在RTW中更改(只会修复错误)。此外,RTW应该在下个月,所以我认为在最终版本发货之前你还没有准备好应用程序。

ObjectContext API或DbContext API?文档和博客文章更好地涵盖了ObjectContext API。你可以找到很多关于它的例子。它的局限性也已众所周知。 DbContext API是新版本。一个非常有前途的版本,主要是因为代码优先的方法。博客文章的数量仍然非常有限,没有书籍,而且API证明不足。所以这取决于你是否准备好与新的API斗争?如果没有,那么ObjectContext API仍然是一个不错的选择,因为您不需要代码优先方法。