3

我最近在收听一个播客,该播客详细讨论了实体框架 (EF) 的缺点。

但是,他们的意见可能需要(我)持保留态度,据我所知:

  • 这些人都是 ORM 专家。
  • 他们要么靠 ORM 工具谋生,要么靠自己的爱好
  • 他们将 ORM 工具用于大规模应用程序
  • 他们也非常关心我不一定关心的 ALT.NET 的超级策略(YET)

我的总体问题是:

  • Entity Framework 目前适合什么类型的项目?

但是这里有一些子问题可能会帮助您了解我对这个问题的看法:

  1. EF总比没有好?我厌倦了手工做所有事情。
  2. 它是否接近于与 LINQ to SQL “解决相同的问题”?2a. 如果是的话,什么时候比另一个更适合?*在我用这个标签检查问题时发现了一个关于这个问题的线程,所以没关系*
  3. 它是否适合简单的“快速而肮脏”的应用程序,例如当您的大部分管理 CRUD 表单时?

编辑:对于那些可能好奇的人,我主要从事中小型应用程序。这可以指导你的反应,或者不是。

4

1 回答 1

1

实体框架适用于所有将受益于 ORM 层的应用程序。Daniel Simmons 的帖子对此进行了详细介绍。 http://blogs.msdn.com/dsimmons/archive/2008/05/17/why-use-the-entity-framework.aspx

实体框架在许多方面与 Linq for SQL 相似,但与 Linq for SQL 所依赖的 MS SQL Server 无关。此外,EF 支持您的业务/域对象和数据表之间更灵活的映射。Linq for SQL 支持更多的一对一映射,而 EF 支持将单个对象映射到多个表或将单个表映射到多个对象的能力。你在这两个方面都有不错的设计师支持。

在开源世界中,NHibernate 可能是最先进的,并且在许多方面是更成熟的产品(它在某些方面肯定支持更广泛的特性)。但是使用 EF,您可以获得对 MS 的全面支持以及与 Visual Studio 工具集和 .net 框架堆栈的紧密集成。在撰写本文时,EF 也是比 NH 更好的 Linq 提供者。

对于快速而肮脏的应用程序,老实说,如果您可以使用 MS SQL Server 和映射限制,我会倾向于 Linq for SQL。

对于更复杂的应用程序,我会使用 EF 或 NHibernate。

您可能对我在 EF 上发表的信任投票感兴趣 http://blog.keithpatton.com/2008/06/24/A+Vote+Of+Confidence+For+The+Entity+Framework.aspx

于 2008-10-07T04:00:50.897 回答