【问题标题】:Stored procedure way or Entity Framework way to connect to database [duplicate]存储过程方式或实体框架方式连接数据库[重复]
【发布时间】:2017-06-21 13:19:20
【问题描述】:

我应该使用哪种方式在 C# ASP.NET MVC 5 中创建可扩展系统?

我应该使用存储过程方式还是实体框架方式连接数据库?

我们的一个头是坚持使用存储过程的方式,即使是所有的插入、删除、搜索等。

就性能而言,哪个更好?我想创建一个在线试卷,一次大约有 500 人同时参加,每个人有大约 50 个问题。

【问题讨论】:

  • 从我的经验来看,EF 比存储过程慢得多,但我认为 500 个请求不足以看出差异。因此,我建议使用 EF,在您的情况下,性能不应该成为问题,我会考虑可读性和易于编写的代码。

标签: c# entity-framework stored-procedures asp.net-mvc-5


【解决方案1】:

我觉得你可以参考问题Entity Framework Vs Stored Procedures - Performance Measure

如果开发时间不是标准,那么您可以选择存储过程。使用存储过程还有许多其他问题,例如可维护性、编写测试的能力等。正如 MaLiN2223 在您的案例中所评论的那样,性能差异可能不足以证明编写过程的额外努力是合理的。

【讨论】:

    【解决方案2】:

    你可以试试其他的ORM——Dapper你可以看到store procedure vs EF vs Dapper的benchmark

    【讨论】:

      【解决方案3】:

      它取决于许多因素,有时您觉得这在应用程序中很容易使用,但在数据变得更大时,您必须重新考虑。

      所以请参考entity framework performance

      所以你很容易理解。我想再给你一个开源项目的参考,所以我希望这会对你有所帮助。 http://www.nopcommerce.com/

      当您看到此应用程序代码时,这确实是对 EF 的优化。 谢谢

      【讨论】:

        【解决方案4】:

        在一个非常高级的说明中,如果您已经有一个数据库设置,如果您需要添加、更新或删除记录作为您功能的一部分,请使用实体框架。 EF 有不同的配置选项来规定如何将模型更改保存到数据库中。

        如果您有批量更改,则在整个 LINQ 和 SQL 来回使用 EF 时会很棘手。但是,EF 上有允许批量操作的扩展。存储过程摆脱了这种大惊小怪。但是 LINQ 在类型安全、可测试等方面有其自身的优势。

        【讨论】:

          【解决方案5】:

          通过查看用户数量,您可以使用其中任何一种。您不会看到太大的性能差异。我的经验是,通过使用实体框架,您可以比存储过程更快地开发它。 使用 dapper 和存储过程可以是另一种方式。 坦率地说,您只能观察到大型数据库的性能差异。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-06-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-03
            • 2017-08-01
            相关资源
            最近更新 更多