1

这里有人问:

“Linq-To-Sql 启用调用 SP。如果此 SP 执行更新/删除/插入,我是否需要在它之后 SubmitChanges()?”

答案是:

“不,你不知道。代码可以工作。提交更改只涉及修改后的 LINQ to SQL 对象,而不涉及存储的过程。”

我想澄清一下:

(请原谅,我对 LINQ 比较陌生)

是的,但是存储过程不会绕过数据上下文对象并修改数据库本身吗?(而 linq 只修改 datacontext 对象,直到调用 datacontext.submitchanges 方法,然后它会修改数据库)

我可以让存储过程以某种方式修改我的 datacontext 对象吗?它已经这样做了吗?

我可以这样吗

  • 如果我用 linq 调用 SP(并且我假设它直接修改数据库),
  • 然后使用 linq 修改我的 datacontext 对象,并提交我对我的 datacontext 对象所做的更改,

我所做的两个不同的更改(一个使用 SP,另一个使用 Linq 到我的数据上下文)不会干扰?

我真正想要的是一种让我的存储过程修改我的数据上下文的方法。这可能吗?

我应该提到,我正在将一个网站从 SQL 转换为 LINQ,该网站主要包含存储过程,并试图与哪些存储过程转换为 LINQ 以及哪些存储过程保留在 SQL 中并使用 LINQ 对它们进行 SP 调用。

谢谢你的帮助,-杰夫

4

2 回答 2

0

FWIW,我们的试金石是任何微不足道的“crud”类型 PROC,它插入/更新单个记录可以移动到 ORM

但是,我们倾向于保留更高级的过程(批量更新或对性能敏感的过程)“原样”。

但是,是的,您需要在调用取决于 DataContext 中更改的数据状态的 Proc 之前调用 SubmitChanges()

可能不相关,如果您需要控制工作单元,请查看将 TransactionScopes 放在您的代码周围?

于 2010-08-06T15:11:42.310 回答
0

如果您通过存储过程更新记录,您加载(和跟踪)的对象可能会变得陈旧。如果您使用过时的对象调用 SubmitChanges,您将获得并发异常。Refresh您可以使用on 方法刷新过时的对象DataContext

于 2010-08-06T17:49:30.227 回答