【问题标题】:Entity Framework - shall I take the risk? [closed]实体框架 - 我应该冒险吗? [关闭]
【发布时间】:2013-03-03 05:53:19
【问题描述】:

我使用传统的 WebForms 和存储过程完成了一些非常复杂的项目。然而,最近,我使用 MVC 和实体框架做了一个项目,我喜欢它们与实体框架一起工作的方式。他们的方式让你以面向对象的方式处理实体......太棒了。该项目不是很复杂。大约只有 12 -15 张桌子。

我们都知道 WebForms 和存储过程更成熟,因此更可靠的做事技术。据我所知,EF 仍在不断发展。它甚至没有非常基本的“唯一约束”。尽管有一些解决方法,但在开始使用 EF 的项目之前,我还是要三思而后行。

我想问的是,如果我想开始另一个庞大而复杂的项目,我可以选择 MVC & EF 吗?有没有走入死胡同的风险?

【问题讨论】:

  • 无论如何,对于我的主要模式数据访问,我都会使用 EF 而非存储过程。如果您担心数据库的设计,您可以采用数据库优先的方法,而不是为您使用 EF 到数据库架构。
  • 同意@Matthew;我想这是一个偏好问题,但我是老派。我从不相信我的数据库设计是代码生成的。我先设计数据库,然后再创建我的实体类。对于某些功能(如唯一约束).. 无论如何都必须在数据库上完成.. EF 还不支持生成它(正如我在下面的回答中提到的)

标签: c# asp.net sql asp.net-mvc entity-framework


【解决方案1】:

我个人在每个新项目中都使用 EF 和 MVC。我还没有遇到缺点。相反,我发现 MVC 更适合使用。关于您的存储过程,它们仍然并且总是比运行 TSQL ad-hoc 更有效。只需用 EF 替换您的普通 ADO.NET 代码并继续使用存储过程。至于独特的约束,您仍然可以在数据库本身中执行这些约束。更多信息在这里:

Unique constraint in Entity Framework

这里:

Does Entity Framework 5 support unique constraints?

此外,请查看此链接以使用存储过程和临时 TSQL 查询与 EF:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application

【讨论】:

  • "[...存储过程..] 仍然并且总是比运行 TSQL ad-hoc 更有效率" 这不是真的,请看这个答案:stackoverflow.com/a/12948506/115049
  • @BryanJ.Ross;很有意思。这与我多年来被告知的一切背道而驰。谢谢你。
  • 这取决于您使用什么指标来提高效率,如果您谈论的是开发人员性能,我发现使用 EF 或 ad-hoc SQL 语句更容易(并且更快)编写和管理.当然,每个公司都有自己的一套需求。
  • 所以基本上,我会假设答案,因为我可以使用 EF,如果有任何障碍,我将能够将存储过程与 EF 一起使用。对吗?
  • 是的,您可以随意混搭。没有什么能阻止您同时使用 EF 和存储过程。
【解决方案2】:

将 EF 和 MVC 用于复杂项目的风险很小。如果你使用 EF,你仍然可以调用存储过程或执行动态 sql 查询(不是你应该这样做的)。 EF 为您提供选择。不使用它可能会有更大的风险。不要忘记 SO 是用 MVC 构建的。

【讨论】:

  • 但不是用 EF 构建的,也不要忘记。
猜你喜欢
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多