我有一个与msdn site上类似的查询:
// Query the database for the row to be updated.
var query =
from ord in db.Orders
where ord.OrderID == 11000
select ord;
// Execute the query, and change the column values
// you want to change.
foreach (Order ord in query)
{
ord.ShipName = "Mariner";
ord.ShipVia = 2;
// Insert any additional changes to column values.
}
// Submit the changes to the database.
try
{
db.SubmitChanges();
}
catch (Exception e)
{
Console.WriteLine(e);
// Provide for exceptions.
}
我现在想要的是一种了解上次更新命令的受影响行的方法。我试过使用:
int affectedRows = dc.GetChangeSet().Updates.Count;
以各种方式,但是即使正确更新了表,此指令也总是使我为0。
最佳答案
dc.GetChangeSet()
告诉您在调用SubmitChanges()
时LINQ to SQL上下文计划进行多少更改。它不跟踪数据库报告的受影响的行数。
如果在调用int affectedRows = dc.GetChangeSet().Updates.Count;
之前先调用SubmitChanges
,则将看到它预计会影响多少行。调用SubmitChanges
之后,不再有任何待处理的更改,因此您将始终获得零计数。
关于c# - Linq-To-Sql:为什么我的变更集始终为零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20333060/