我即将开始实现一个项目的数据访问基础设施,该项目是使用 DDD 方法构建的(这是我第一次尝试 DDD,所以要温柔;-) ).
我将使用实体框架。到目前为止,我一直在研究朱莉·勒曼(Julie Lerman)在她的伟大著作中教授的方法,编程实体框架, where ADO.NET POCO 实体生成器使用,对 T4 模板进行一些更改并添加一些自定义代码。
今天我开始阅读有关 EF4.1 和ADO.NET DbContext 生成器, using 数据库优先方法,我正在尝试决定我应该选择哪一种。
DbContext 和 EF4.1 在 DDD 上的方法似乎是比 POCO Entities 更好、更干净的方法,但我担心它可能会在不久的将来导致一些问题,因为 EF4.1 仍处于 RC 状态。
From ADO.NET 团队博客,我知道EF4.1does not包括:
- 枚举支持
- 空间数据类型支持
- Code First 中的存储过程支持
- Code First 中的迁移支持
- Code First 中的可自定义约定
根据我的理解,因为我将使用数据库优先还有少量功能未包含在内。
总之,我的问题是:
我可以更换吗POCO 实体生成器使用 EF4.1 DbContext 生成器?
从一个角度来看cleanPOCO实体的创建,两个生成器之间没有区别。两个生成器生成相同的实体,但是,ADO.NET POCO 实体生成器基于ObjectContext
的 API,而 ADO.NETDbContext
生成器基于DbContext
's API.
DbContext 的 API 有一些非常好的新功能(本地、导航属性查询等),并且 API 在某种程度上得到了简化,但同时看起来 DbContext API 中缺少 ObjectContext API 中使用的一些功能(或者至少它具有还没有被充分探索)。
EF 4.1 RC 已上线。这意味着您可以用它构建一个真正的应用程序,因为 API 在 RTW 中不会改变(只会修复错误)。 RTW 应该在下个月发布,所以我认为在最终版本发布之前您还没有准备好您的应用程序。
ObjectContext
API or DbContext
API? ObjectContext
文档和博客文章更好地涵盖了 API。你可以找到很多关于它的例子。它的局限性也是众所周知的。DbContext
API 是新版本。这是一个非常有前途的版本,主要是因为代码优先的方法。博客文章的数量仍然非常有限,没有书籍,API 也没有得到足够的验证。所以这取决于你是否准备好迎接新的 API 了?如果没有,那么ObjectContext
API 仍然是一个不错的选择,因为您不需要代码优先的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)