我在几个项目中使用了实体框架.在每个项目中,由于存储过程的众所周知的好处 – 安全性,可维护性等,我已经使用映射到实体的存储过程.但是,99%的存储过程是基本的CRUD存储过程.这似乎是否定了实体框架 – sql生成的主要的,节省时间的功能之一.
我已经阅读了有关存储过程的一些参数,而实体框架中生成了sql.虽然使用CRUD SP是更好的安全性,由EF生成的sql通常比必要更复杂,它是否真的购买任何在性能或可维护性使用SP?
这是我相信的:
>大多数时候,修改SP需要更新数据模型
无论如何.所以在可维护性方面并不是很多.
>对于Web应用程序,与数据库的连接使用特定于应用程序的单个用户ID.所以用户甚至没有直接的数据库访问.这降低了安全性的好处.
>对于一个小的应用程序,性能略有下降
生成的sql可能不是很大的问题.为高
音量,性能关键应用,EF甚至是一个明智的
选择?另外,是生成的insert / update / delete语句
由EF真的那么糟糕?
>将每个属性发送到存储过程都具有自己的性能惩罚,而EF生成的代码仅发送实际更改的属性.当对大型表进行更新时,增加的网络流量和更新所有属性的开销可能会抵消存储过程的性能优势.
话虽如此,我的具体问题是:
我上面列出的信仰是否正确?现在ORM正在越来越受欢迎,总是使用SPs“老派”的想法?在您的经验中,使用EF更好的方法是使用所有插入/更新/删除的映射SP或使用EF生成的sql进行CRUD操作,并且仅使用SP来处理更复杂的东西?