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

标签 .net ado.net-entity-data-model

你好

使用 ADO.NET 实体模型作为数据层的优缺点是什么?如果我要使用这项技术,我应该使用 LINQ 吗?

谢谢

最佳答案

首先:您不必使用 LINQ 来使用 Entity Framework (EF),但它肯定会有所帮助。 EF 基于 EF 团队称为 Entity SQL 的东西,所以当您使用 LINQ to Entities 时,真正发生的事情是 LINQ 表达式被转换为实体 SQL,实体 SQL 又被转换为您的数据库使用的任何 SQL 方言(T-SQL 用于SQL 服务器)。

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

优点

  • 与 LINQ to SQL (L2S) 一起,LINQ to Entities (L2E) 和 EF 是目前微软提供的最好的数据访问 API。尽管存在所有缺点,但在大多数情况下,它们比“传统”ADO.NET 好得多。
  • 虽然 L2S 更简单,但 L2E 已经被标记为微软数据访问 API 的 future ,所以如果你想留在主流的微软 API 流中,你应该使用 L2E。看起来 L2S 不会有太多新的发展。
  • EF 将在 .NET 4 中获得相当大的功能和灵活性提升

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

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

    关于.net - 使用 ADO.Net 实体模型的利弊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1867377/

    相关文章:

    c# - Emgu CV图像锐化和控制检测

    c# - C#中的原型(prototype)设计模式

    mysql - 无法创建实体数据模型 - 使用 MySql 和 EF6

    entity-framework-4 - Entity Framework 4 : Does it make sense to create a single diagram for all entities?

    asp.net-mvc-3 - MVC3 与 Npgsql 和 Entity Framework 和 .Net 框架 4

    .net - 转换 Word 文档时 Azure 云上的图像问题。使用 aspose.words 转换为 html

    c# - 在 .NET 和基于 COM 的组件之间传递时必须转换什么类型的数据?

    c# - 无法将表格从模型浏览器拖到 edmx 设计界面

    asp.net-mvc - ADO.NET 实体数据模型不更新实体

    c# - 初学者如何将 PHP 转换为 .NET