我即将开始实现一个项目的数据访问基础设施,该项目采用DDD方法构建(这是我第一次尝试DDD,所以要温和;-)).
我将使用Entity Framework.到目前为止,我正在研究朱莉·勒曼(Julie Lerman)在她的伟大着作" 编程实体框架 "(Programming Entity Framework)中使用的方法,其中使用了ADO.NET POCO实体生成器,对T4模板和一些更多自定义代码进行了一些更改.
今天我开始使用Database First方法阅读有关EF4.1和ADO.NET DbContext Generator的文章,我正在尝试决定应该选择哪一个.
DbContext和EF4.1的DDD方法似乎比POCO实体更好,更清晰,但我担心它会在不久的将来导致一些问题,因为EF4.1仍然在RC中.
从ADO.NET团队博客,我知道EF4.1 不包括:
根据我的理解,由于我将使用Database First,因此未包含的功能数量较少.
总之,我的问题是:
我可以用EF4.1 DbContext Generator 替换POCO实体生成器吗?
我一直在阅读.net中的自跟踪实体以及如何从*.edmx文件生成它们.我正在努力理解的是生成这些实体的原因是什么让你了解基本的EF实体?此外,有些人提到了自我跟踪实体和Silverlight,但为什么要使用这些实体而不是客户端或RIA服务生成的共享类?
自我跟踪实体有什么意义,为什么要使用它们?
我们正在开始一个新的基于Web的产品,我们计划通过WCF服务公开我们的业务逻辑.我们将使用ASP.NET 4.0,C#,EF 4.0.将来我们希望基于这些服务构建iphone应用程序和WPF应用程序.我一直在阅读很多关于使用POCO和自我跟踪实体(STE)的内容,据我所知,STEs在网络方案中效果不佳.任何人都能更清楚地了解这个问题吗?
我正在针对遗留数据库评估项目的实体框架.数据库设计得相当好,已经决定我们将使用Database-First方法.该应用程序将基于WinForms,但我想提前计划并考虑ASP.Net以及管理层可能会在某些时候请求,我想重用DAL.
现在,我了解Entity Framework为实体对象提供了几种方法:
我一直试图比较这三种方法,到目前为止我已经发现了这一点.
EntityObject T4模板是其中最丰富的.例如,它将来自实体模型的注释放在每个类和实体的每个属性之上的XMLDoc注释中,这在代码可维护性方面相当不错且有用.没有其他生成器支持这种开箱即用(虽然我知道可以修改T4模板,但它显然需要一些工作).另一方面,DbContext API更好一些.
EntityObject派生类型提供了一个事件,您可以在实体的属性更改时挂钩,这对实现业务逻辑很有用.
我知道POCO对此更自然,但每次模型更改时,T4生成器都会覆盖我的所有更改.当然,生成的POCO是部分类,但据我所知,不可能覆盖已经在部分类中定义的属性,所以我不确定如何在其中实现业务逻辑?
很多人似乎讨厌EntityObject派生类,更喜欢POCO方法,但似乎我失去了许多由EntityObjects开箱即用的有用功能,通过POCO路由.考虑到对POCO对象的普遍强烈偏好,我可能会误解某些东西,因此我的问题.
最后,哪个生成器最适合ASP.Net环境?我担心我的实体更改会被停止跟踪?自我跟踪实体在这种情况下是否更有用,或者它们是否仅具有Web服务的价值(我可能不会使用它)?
提前谢谢了.