4

你好

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

谢谢

4

2 回答 2

6

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

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

优点

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

缺点

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

简而言之,如果您只能使用 BCL 中的内容,请使用它,或者,如果您使用的是 .NET 4,请尝试一下;否则,有更好的替代品以开源库的形式出现。

于 2009-12-08T14:53:50.943 回答
0

这里有一些关于 ADO.NET 的专业人士。我还没有发现任何缺点。编辑:以及有关 ADO.NET 的更多信息,包括缺点:这里

关于 LINQ:没有人会强迫您使用 LINQ(可能是雇主除外),但它与 ADO.NET 结合使用肯定有好处。另见:这里

很抱歉有一堆链接,但 C/P 有很多文字。快乐阅读:)。

于 2009-12-08T14:46:16.053 回答