Linq to sql Linq to Sql为更新记录执行自定义存储过程

Linq to sql Linq to Sql为更新记录执行自定义存储过程,linq-to-sql,Linq To Sql,我对使用LINQ2SQL中的存储过程更新数据有点困惑。 我的问题是:当我使用存储过程更新数据库中的一些数据时(但这是存储的) 过程没有映射到某个特定的实体)我应该在它之后调用SubmitChanges。还有事务呢?当我在循环中调用许多这样的过程时,我是否应该通过Connection显式创建事务。BeginTransaction()方法或模型是否为我这样做 同样,我知道当存储过程链接到模型中的某个实体时它是如何工作的,但现在我不习惯使用自定义存储过程来更新许多表中的记录 谢谢你的帮助 通过存储过程

我对使用LINQ2SQL中的存储过程更新数据有点困惑。 我的问题是:当我使用存储过程更新数据库中的一些数据时(但这是存储的) 过程没有映射到某个特定的实体)我应该在它之后调用SubmitChanges。还有事务呢?当我在循环中调用许多这样的过程时,我是否应该通过Connection显式创建事务。BeginTransaction()方法或模型是否为我这样做

同样,我知道当存储过程链接到模型中的某个实体时它是如何工作的,但现在我不习惯使用自定义存储过程来更新许多表中的记录


谢谢你的帮助

通过存储过程和LINQ到SQL更新非实体数据非常简单。只需将存储过程从服务器资源管理器拖到DBML设计器中的空白处(这样它就不会尝试返回实体对象),并在代码中调用关联的生成方法,如下所示:

myDataContext.MyStoredProcedureMethod();
该操作将立即执行,因此不需要调用SubmitChanges()


要将此调用(或循环,或其他内容)包装到LINQ-To-SQL事务中,请参阅,以了解如何使用LINQ-To-SQL事务。

LINQ-To-SQL与存储过程的接口不太好-如果您认真考虑使用存储过程,我建议您在.NET 4中“升级”到实体框架-更好地支持存储过程@marc_s,Linq to SQL在哪些方面与存储过程接口不好?@Kirk Woll:两件主要的事情:首先,不能从存储过程返回与模型中的实体不完全对应的结果集(EF通过为此定义特定的“复杂类型”来支持这一点),其次,您只能在L2S中执行存储过程,而在EF4中,您可以为每个实体类型分配存储过程,用于插入、更新、删除操作(例如,您可以为删除分配一个存储过程,并让EF4通过生成SQL代码状态来处理其他操作)。谢谢@marc_,我感谢您的回复。关于两点:1)Linq To Sql要求将存储过程的结果映射到实体,但没有理由不能像往常一样为SP创建自定义类型(Entitei)并使用
[表]
[列]
[关联]
属性对其进行注释。对于返回自定义类型的SP,我总是这样做。2) 事实上,Linq To Sql确实支持用于插入/更新/删除的自定义SP:Makes@marc_s,感谢您指出了工具的缺陷。