使用存储过程和Linq to SQL获取行更新计数

时间:2010-01-05 22:12:34

标签: linq-to-sql stored-procedures

我有一个Linq to SQL数据上下文类,我在那里触发存储过程。我可以通过生成的代码跟踪存储过程的触发位置。我检查System.Data.Linq.SqlClient.SqlProvider.ExecuteResult并且可以看到有一个名为“value”的私有成员,其中包含更新的行数。似乎没有任何公共访问器,并且结果似乎无论如何都不会返回到数据上下文。有没有其他方法来访问此值或我是否必须从每个存储过程返回@@ RowCount(yuck)?

1 个答案:

答案 0 :(得分:0)

嗯。不可否认,这是一个“最好的猜测”,因为我没有尝试使用存储过程,但这是你正在寻找的:

... Do Updates ...
// if sdc is your DataContext
int changedRecords = sdc.GetChangeSet().Updates.Count();
sdc.SubmitChanges();

这是针对更新记录的,您可以根据需要将.Updates替换为.Inserts和.Deletes。只要存储过程是数据上下文的一部分,它就应该由GetChangeSet()跟踪。