Linq to sql LINQ到SQL-存储过程如何与未提交的datacontext更改交互?
有人问: Linq To Sql启用调用SP。如果此SP执行更新/删除/插入,是否需要在更新/删除/插入后提交更改() 答案是: “不,您不需要。代码可以工作。提交更改只涉及修改的LINQ到SQL对象,而不涉及存储的过程。” 我只想澄清: (请原谅,我对LINQ比较陌生) 是的,但是存储过程不会绕过datacontext对象并修改数据库本身吗?(而linq只修改datacontext对象,直到调用datacontext.submitchanges方法,然后修改数据库) 我可以让存储过程以某种方式修改我的datacontext对象吗?它已经这样做了吗 我可以这样做吗Linq to sql LINQ到SQL-存储过程如何与未提交的datacontext更改交互?,linq-to-sql,stored-procedures,interaction,submitchanges,Linq To Sql,Stored Procedures,Interaction,Submitchanges,有人问: Linq To Sql启用调用SP。如果此SP执行更新/删除/插入,是否需要在更新/删除/插入后提交更改() 答案是: “不,您不需要。代码可以工作。提交更改只涉及修改的LINQ到SQL对象,而不涉及存储的过程。” 我只想澄清: (请原谅,我对LINQ比较陌生) 是的,但是存储过程不会绕过datacontext对象并修改数据库本身吗?(而linq只修改datacontext对象,直到调用datacontext.submitchanges方法,然后修改数据库) 我可以让存储过程以某种方式
- 如果我使用linq调用SP(我假设它直接修改数据库)
- 然后使用linq修改我的datacontext对象,并提交我对datacontext对象所做的更改
感谢您的帮助,-JeffFWIW,我们的试金石测试是任何简单的“crud”类型的过程,它插入/更新单个记录可以移动到ORM 但是,我们倾向于让更高级的过程(批处理更新或对性能高度敏感的更新)保持“原样” 但是,是的,您需要在调用依赖于DataContext中更改的数据状态的过程之前调用SubmitChanges()
可能不相关,如果您需要控制工作单元,请考虑在代码周围放置TransactionScope?如果您通过存储过程更新记录,则加载(和跟踪)的对象可能会过时。如果使用陈旧对象调用SubmitChanges,则会出现并发异常。您可以使用
DataContext
上的refresh
方法“如果需要控制工作单元,请查看放置事务范围”来刷新过时对象。或者只是手动打开一个连接,在其中启动一个事务,并将该连接提供给DataContext
的构造函数之一。