我注意到在Entity Framework设计器中,您可以映射Insert,Update和Delete操作的存储过程.有没有办法为Select操作执行此操作,或者是否有新的数据库访问代码方向,我们不再为基本的选择操作编写存储过程了?
我工作的公司非常坚持总是使用存储过程进行每个数据库操作,即使实体框架通过调用sp_executesql使调用安全.
LINQ to SQL和Entity Framework似乎已经不再使用存储过程来选择数据了.这是一个准确的陈述吗?
只是为了澄清我的问题:
我的数据库中有一个名为Product的表.我使用实体框架中的向导来生成我的模型......所以我现在有一个名为Product的实体.当我执行以下查询时:
db.Products.SingleOrDefault(p => p.Id == 1);
Run Code Online (Sandbox Code Playgroud)
它生成的代码类似于:
EXEC sp_executesql N'SELECT * FROM Product'
Run Code Online (Sandbox Code Playgroud)
当我真的想要做的事情:
EXEC up_GetProduct @Id = 1
Run Code Online (Sandbox Code Playgroud)
如果使用SingleOrDefault无法做到这一点,我就可以了.我更愿意拥有以下内容:
db.Products.GetProduct(1);
Run Code Online (Sandbox Code Playgroud)
这是通常完成的事情还是大多数人只是让它动态生成SQL?