我有一个与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/

10-12 01:51