.net - 如果使用 Linq 和 EF,SP 是否多余(最佳实践)

标签 .net linq entity-framework stored-procedures

我正在考虑将我的开发团队转移到 LINQ 和 Entity Framework 。如果我这样做了,我是否应该考虑删除 SP?

通常我们的架构是(按顺序);

SQL -> SPs -> Data Access Layer -> Business Objects -> GUI

我是否应该转向类似于以下内容的内容:
SQL -> Entity Framework Layer -> Business Objects (probably inherited from EF layer) -> GUI

如果我留下 SP,我会看到同样多的好处吗?还有什么是最佳实践?

最佳答案

不,它们不是多余的 .

我们 90% 的数据访问代码都使用 Entity Framework 。

这 10% 用于以下场景:

  • 当代码在逻辑上很重要(过于复杂)
  • 当性能至关重要时
  • 当单个事务需要影响多条记录时

  • LINQ-Entities(和 LINQ,一般来说)是一个出色且一致的框架,但有时翻译的 SQL 并不像您期望的那样最佳 - 额外的 JOIN、CASE 等。有时在这些情况下,跳过表达式是明智的树翻译并直接转到 native SQL。

    更重要的是, Entity Framework 促进了存储过程。您可以将它们映射到模型上,甚至可以将过程直接映射到实体上的 CRUD 操作。

    所以一般来说,对于大多数简单的操作(例如 CRUD)使用 EF,并在性能和复杂性是因素时使用存储过程。

    哈。

    关于.net - 如果使用 Linq 和 EF,SP 是否多余(最佳实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517891/

    相关文章:

    c# - DebuggerDisplay 指令 ",nq"是否只对字符串有效?

    c# - 企业库验证 block 和规则集

    c# - 如何更改此正则表达式以与 .Net 正则表达式引擎一起使用?

    c# - 启动后将焦点设置到winform

    c# - LINQ:如何声明 IEnumerable[匿名类型]?

    asp.net - Linq 查询无法转换为 SQL : how to optimize the code?

    c# - Entity Framework linq 包含和分组

    c# - EF 核心 : how to validate data exists by condition in OnModelCreating

    c# - 为什么 IQueryable 后面跟着 Any 会导致选择没有Where 子句?

    entity-framework - Entity Framework 存储过程具有多个结果集?