有人问:
“Linq-To-Sql允许调用SP。如果此SP执行更新/删除/插入,我是否需要在它之后提交SubmitChanges()?”
答案是:
“不,你没有。代码可以工作。提交更改只涉及修改的LINQ to SQL对象而不是存储过程。”
我想澄清一下:
(请原谅,我对LINQ比较陌生)
是的,但是存储过程是否会绕过datacontext对象并修改数据库本身? (而linq仅修改datacontext对象,直到调用datacontext.submitchanges方法,然后修改数据库)
我可以以某种方式修改我的datacontext对象的存储过程吗?它已经这样做了吗?
我可以这样做吗
我做的两个不同的更改(一个用SP,另一个用Linq到我的datacontext)不会干扰?
我真正想要的是让我的存储过程修改我的datacontext的方法。这可能吗?
我应该提一下,我正在将一个网站从SQL转换为LINQ,主要是存储过程,并试图选择我的战斗,使用哪些存储过程转换为LINQ,并保留在SQL中,然后使用SQL进行SP调用LINQ。
感谢您的帮助,-Jeff
答案 0 :(得分:0)
FWIW,我们的石蕊测试是任何琐碎的'crud'类型PROC,插入/更新单个记录可以移动到ORM
但是,我们倾向于保留更高级的过程(批量更新或性能敏感的过程)''。
但是,是的,你需要在调用Proc之前调用SubmitChanges(),这取决于DataContext中更改的数据状态
可能不相关,如果您需要控制工作单元,请查看将TransactionScopes放在您的代码周围?
答案 1 :(得分:0)
如果通过存储过程更新记录,则加载(和跟踪)的对象可能会过时。如果使用陈旧对象调用SubmitChanges,您将获得并发异常。您可以使用Refresh
上的DataContext
方法刷新陈旧对象。