使用ADO.Net实体模型的利弊

Lol*_*Run 4 .net ado.net-entity-data-model

您好

将ADO.NET实体模型用作数据层有哪些优缺点?如果我打算使用这项技术,我应该使用LINQ吗?

谢谢

Mar*_*ann 6

首先:您不必使用LINQ来使用实体框架(EF),但它确实有帮助.EF基于EF团队称为Entity SQL的东西,因此当您使用LINQ to Entities时真正发生的事情是LINQ表达式被转换为Entity SQL,它再次被转换为您的数据库使用的任何SQL方言(T-SQL for SQL Server).

EF的优点和缺点是一个有争议的主题,因为大多数人并不特别喜欢EF,但我会尽量保持中立.

优点

  • 与LINQ to SQL(L2S)一起,LINQ to Entities(L2E)和EF是目前Microsoft提供的最佳数据访问API.尽管存在各种缺点,但在大多数情况下,它们都比传统的ADO.NET更好.
  • 虽然L2S更简单,但L2E已被标记为Microsoft数据访问API的未来,因此如果您希望保留主流Microsoft API组合,则应使用L2E.它看起来不像L2S会看到很多新的发展.
  • EF将在.NET 4中获得相当大的功能和灵活性

缺点

  • 与EF合作很难.在架构更改方面它非常脆弱,当底层架构发生变化时更新它是一个婊子
  • EF生成的T-SQL非常糟糕(虽然这应该在.NET 4中有所改变)
  • 持久性无知是不可能的(直到.NET 4)
  • 很多LINQ方法都没有实现,因此API比它看起来更有限.
  • 它并不像人们希望的那样灵活

简而言之,如果您只能使用BCL中的内容,请使用它,或者,如果您使用的是.NET 4,请尝试使用它; 否则,开源库的形式有更好的选择.