Entity framework 延迟加载、TDD、数据优先方法:这些杀手锏是实体框架的核心吗?

Entity framework 延迟加载、TDD、数据优先方法:这些杀手锏是实体框架的核心吗?,entity-framework,tdd,Entity Framework,Tdd,编辑:伙计们,我是说实体框架而不是ASP.NET MVC,很可能是打字错误 昨天我遇到了一个十字架,上面列出了实体框架的一些不好的东西。在做了一些谷歌的东西后,我发现这基本上是这里的捍卫者。这两篇文章讨论了实体框架的一些主要问题,例如: EF不是一个失败,因为它不适合TDD开发 EF不是一个失败,因为业务逻辑进入了部分类 EF不是一个失败,因为它将数据视为biz对象的重要组成部分 EF并不是一个失败,因为它承认大多数人都是先进行数据开发的 EF不是一个失败,因为延迟加载很难–延迟加载会破坏性能

编辑:伙计们,我是说实体框架而不是ASP.NET MVC,很可能是打字错误
昨天我遇到了一个十字架,上面列出了实体框架的一些不好的东西。在做了一些谷歌的东西后,我发现这基本上是这里的捍卫者。这两篇文章讨论了实体框架的一些主要问题,例如:

  • EF不是一个失败,因为它不适合TDD开发
  • EF不是一个失败,因为业务逻辑进入了部分类
  • EF不是一个失败,因为它将数据视为biz对象的重要组成部分
  • EF并不是一个失败,因为它承认大多数人都是先进行数据开发的
  • EF不是一个失败,因为延迟加载很难–延迟加载会破坏性能
  • EF不是一个失败,因为它的设计工具是1.0级的
  • EF不是一个失败,因为它在合并到源代码管理中的策略很差
在上面的列表中,我真正关心的是TDD适合性、延迟加载泄漏和源代码控制问题

以下是我的问题:

  • 如果我使用EF,我不能对我的应用程序方法进行足够好的单元测试吗
  • 延迟加载很难意味着什么?EF完全不支持它吗
  • EF合并到源代码管理中的策略很差,这意味着什么?不是所有文件都像解决方案中的任何普通文件一样签入和签出吗

  • 希望这能澄清我想问的问题,谢谢你们的帮助!谢谢你

    感谢您删除问题中的打字错误。现在我也可以把我的答案缩短一点:-)

    实体框架并没有真正支持TDD/SOLID/Alt.Net人群所喜欢的编程风格。这就是不信任投票的意义所在。EF迫使您围绕持久性框架设计业务逻辑,这使得测试和维护业务逻辑变得更加困难。从积极的一面看,由于实体框架周围的所有工具,它允许您快速地建立并运行对象模型和持久性层

    在较新版本的EF中,这一点变得更好。我不知道EF4是否允许持久性无关对象模型,这是最重要的缺点。但在我看来,这并没有真正改变EF是为一种不同于不信任投票作者所希望的编程风格而设计的这一事实。EF非常依赖于工具,并以数据库为中心的方式指导您构建软件。构建软件的默认方法仍然是创建一个数据库并从中生成对象模型


    我不认为围绕EF的大多数问题都是关于什么是可能的。您始终可以从业务逻辑中抽象出EF部分,并构建测试驱动的应用程序。问题是什么样的编程风格更容易。我认为你应该为正确的工作使用正确的工具。如果您在一个对数据驱动的开发风格感到满意的团队中构建企业软件,那么您应该使用EF。如果您正在构建一个持久性不如业务逻辑重要的软件,并且您所在的团队熟悉TDD、DDD、BDD、SOLID以及所有这些东西,那么您最好使用nHibernate之类的工具。

    关于EF,事情即将变好!:)EF4就要到了,尽管有些声音还在抱怨,但我不明白他们为什么要烦恼。EF终于成熟了,可能还不成熟——它才开发了几年,但至少是一个可靠而灵活的框架。

    开发人员对Entity framework 1.0(.NET 3.5 SP1)有很多不满。EF 4.0的当前版本(第2版,但之所以称为EF 4.0,是因为它是作为.NET 4.0的一部分发布的)解决了大多数投诉。如果您是MSDN订户,则可以使用Beta 1


    团队和团队最近发表了一系列文章,讨论EF 4.0中的各种场景支持,其中最大的是持久性无知和POCO支持、N层支持、T4模板等等。TDD和数据/模型/实体优先也通过上述变更得到支持。延迟加载也存在。

    您是在谈论ASP.NET MVC还是实体框架?它们是两个完全不同的东西,所以我认为这个问题需要澄清。我猜你指的是ADO.Net实体框架,而不是ASP.NETMVC。NETMVC是一个web框架,而实体框架是一个数据库框架。ASP.Net MVC非常适合TDD,它支持行为优先和数据优先开发。感谢Thomas的编辑,是的,我指的是实体框架。我正在尝试将其应用于实际项目中,我不能将VS 2010 Beta用于实际项目(公司政策)。有关当前版本的任何澄清?@7alwagy,您可能必须使用Linq to SQL或EFPocoAdapter,这是EF 4.0功能的临时暂存平台。我用过EFPocoAdapter,我没有用它碰过任何墙,我希望EF会更好。如果你能接受的话,总有一个问题。请你再检查一下这个问题,好吗。提前感谢Hanks Mendelt,在长时间查看EF和NHibernate后,接受了!:)