如果使用Linq和EF,SP是多余的(最佳实践)

Mik*_*ell 5 .net linq stored-procedures entity-framework

我正在考虑将我的开发团队转移到LINQ和Entity框架.如果我这样做,我应该考虑删除SP吗?

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

SQL -> SPs -> Data Access Layer -> Business Objects -> GUI
Run Code Online (Sandbox Code Playgroud)

我应该转向类似的东西:

SQL -> Entity Framework Layer -> Business Objects (probably inherited from EF layer) -> GUI
Run Code Online (Sandbox Code Playgroud)

如果我离开SP,我会看到多少好处?还有哪些最佳做法?

RPM*_*984 19

不,他们不是多余的.

我们使用Entity Framework来获取90%的数据访问代码.

10%用于以下场景:

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

LINQ-Entities(和LINQ,一般而言)是一个精彩且一致的框架,但有时候翻译的SQL并不像你期望的那样最佳 - 额外的JOIN,CASE等等.有时在这些场景中跳过表达式是明智的树转换并直接转到本机SQL.

而且,实体框架促进了存储过程.您可以在模型上映射它们,甚至可以将过程直接映射到实体上的CRUD操作.

因此,通常,在大多数简单操作(例如CRUD)中使用EF,并在性能和复杂性是因素时使用存储过程.

HTH.