HI
使用 ADO.NET 实体模型作为数据层有哪些优缺点?如果我要使用这项技术,我应该使用 LINQ 吗?
Thanks
首先:您不必使用 LINQ 来使用实体框架 (EF),但它确实有帮助。 EF 基于 EF 团队所称的东西实体SQL,因此,当您使用 LINQ to Entities 时,真正发生的情况是 LINQ 表达式被转换为 Entity SQL,实体 SQL 又被转换为数据库使用的任何 SQL 方言(SQL Server 的 T-SQL)。
EF 的利弊是一个有争议的话题,因为大多数人并不特别喜欢 EF,但我会尽力保持中立。
Pros
- 与 LINQ to SQL (L2S)、LINQ to Entities (L2E) 和 EF 一起,目前是 Microsoft 提供的最佳数据访问 API。尽管存在种种缺点,但在大多数情况下它们都比“传统”ADO.NET 好得多。
- 虽然 L2S 更简单,但 L2E 已被标记为 Microsoft 数据访问 API 的未来,因此如果您想留在主流 Microsoft API 潮流中,则应该使用 L2E。看起来 L2S 不会有太多新的发展。
- EF 将在 .NET 4 中获得相当大的功能和灵活性提升
Cons
- 使用 EF 是hard。当涉及到架构更改时,它非常脆弱,并且当底层架构更改时更新它是很麻烦的
- EF 生成的 T-SQL 很糟糕(尽管这应该在 .NET 4 中改变)
- 持久性无知是不可能的(直到 .NET 4)
- 许多 LINQ 方法尚未实现,因此 API 比看起来更有限。
- 它并不像人们希望的那样灵活
简而言之,如果您只能使用 BCL 中的内容,请使用它,或者,如果您使用 .NET 4,请尝试一下;否则,还有开源库形式的更好替代方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)