我即将开始实施一个项目的数据访问基础设施,该项目采用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 不包括:
根据我的理解,由于我将使用 数据库优先 ,因此未包含的功能数量较少。
总之,我的问题是:
我可以用EF4.1 DbContext Generator替换 POCO实体生成器吗?
答案 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仍然是一个不错的选择,因为您不需要代码优先方法。