实体框架4.0:现在值得吗?

时间:2010-09-22 07:03:24

标签: .net entity-framework

我已经阅读了很多关于.NET 3.5 SP1中的Entity Framework的抱怨,特别是关于它生成效率低下的SQL。这些抱怨使我无法研究实体框架。

现在实体框架4.0已经问世,它提供了许多承诺。我想知道它现在真的是一个好的ORM,还是还没有呢?是否值得在我的.NET项目中学习和使用它,而不是传统的SQL查询?你有没有计划切换到EF 4.0?

提前致谢。

7 个答案:

答案 0 :(得分:8)

你应该真正看看Julie Lerman's blog on EF4,她对产品充满热情,但技术上是正确的。据我所知,我可以告诉你,我们已经在几个以上的生产项目中使用了EF4并取得了良好的效果: - )

答案 1 :(得分:8)

一个字:是!!

实体框架4.0包含大量的增加和改进,并且有了POCO和自我跟踪实体的附加模板,它现在已经准备好迎接黄金时段了。

如果你愿意,你甚至可以在代码中定义你的整个EF“模型” - 根本没有* .edmx文件 - 外观和感觉很像Fluent NHibernate。你有很多选项与EF4 - 这是一件好事,并且表明ADO.NET团队确实听过社区(现在非常努力使这些事情变得更好)

除了Julie Lerman的书和博客,您还应该查看ADO.NET EF4 team blog - 它包含非常有用和有用的提示和提示。

您可能会对此博客文章感兴趣:

答案 2 :(得分:2)

,EFv4(在.net 4中)与EFv1完全不同(在.net 3.5 SP1中)。

EFv1有很多限制,有时会产生可怕的T-SQL。

就我而言,EFv4生成的TSQL很好;有时它会比子需要更多地嵌套子查询,但这是一个只影响人类可读性的美容事物......

答案 3 :(得分:1)

如果您需要ORM并且您仅限于.NET Framework,那么EF v4.0是主要升级,它比EF v1好得多。但另一方面,它仍然只是第二版,许多问题尚未解决。还提到代码第一次开发(没有.edmx)只是CTP版本,它还没有从生产使用中准备好。但我相信你可以在任何类型的项目中成功使用EF,你仍然可以在更快的开发中获得一些附加价值。

您可以考虑的限制因素包括:

  • 有限映射
  • 在共享环境中使用EDMX的经验更糟糕
  • 断开连接方案的糟糕体验
  • 没有内置跟踪
  • 有限的可扩展性,无钩子

答案 4 :(得分:1)

EF4仍然缺少相当重要的组件。但是,你为什么要等完美的产品呢?它永远不会存在。 EF4非常有用,即使它有一些粗糙的边缘。

您可以并排使用SQL和EF4,因此如果碰巧遇到EF4生成低效代码或者根本不支持某些内容的情况,您可以始终使用普通的旧ADO.NET。实体框架实际上支持从DataRow构建实体,因此您可以相当容易地将这种异常SQL查询的结果插回到正常的程序流中。 EF4闪耀的地方是更常见的类型 - 安全& intellisense发挥作用。

使用实体框架确实需要一点学习曲线,越早开始越好。 尽管事实上EF4尚未完全存在(在我看来,无论如何),我会说:去吧!将它用于几个小角落你的应用程序,以了解它。

您可以在SqlConnection打开的现有(未打开)EntityConnection上构建实体连接,然后使用TransactionScope允许您在两者之间共享一个非分布式事务EF和ADO。总之,这意味着您可以使用EF的一小部分作为普通ADO查询,事务和所有内容的直接替换,作为同一连接的一部分(即,从服务器的角度来看没有额外开销)。

答案 5 :(得分:1)

没有。 EF不支持系统概念完整性(既不是n层体系结构),所以除了一堆混乱引用的组件,一个错误的平台和错误的通信机制之外,你最终都没有架构。

答案 6 :(得分:0)

现在没有

考虑到3.5 sp1中EF的限制和以前的实验,我建议不要考虑EF直到它稳定。可能是版本5,我应该赞成。如果你在那之前使用LinQ to SQL进行设计会更好。

快乐编程......