我是实体框架的新手。通常我一直在使用SQL Server存储过程并使用ADO.NET进行调用。
现在,我想选择最适合用作数据访问层的内容。
存储过程与实体框架的良好设计?或者必须直接对模型进行linq查询(没有存储过程)。 ?
我相信,存储过程维护所有sql语句在公共场所,并且可以管理以后的Web部署,如果Ef直接查询对象,这是不可能的
请指导设计观点应该选择什么。
谢谢
答案 0 :(得分:2)
EF不会否定存储过程的值,EF使得adhoc查询更容易执行以及更新等...存储过程仍然非常有用,存储过程允许您更改逻辑/标准而无需重新编译.NET代码,根据我的经验,当您需要对外键等进行查找时,EF会使生活更轻松,但它会转换为T-SQL语句。
就像它所有的一切一样,如果你处于存储过程是常态的环境中,那么EF将正常工作,但是如果你可以自由地执行特殊查询,那么EF表达式就很棒。这里没有对错,EF可能会使存储过程的数量变小,但有时存储过程正是你应该做的。
你在数据库中放置的逻辑越多,你就越有可能调用DB proc。有些人认为数据库是业务逻辑应该存在的地方,但我不是其中之一。我相信应用程序中的强大业务层只使用数据库来存储和调用信息以及报告信息。
从性能角度来看,存储过程将是更好的方向,它更容易调试/显示存储过程的计划,因为您确切知道所调用的内容。在SQL SERVER中更好地处理基于集合的数据库操作,这是RBMS的整个目的,因此在决定应该做什么时,所有这些因素都起作用。我认为以某种方式取消存储过程或EF表达式是不现实的。 这完全取决于背景。