Linq-To-Sql:为什么我的变更集始终为零?

时间:2013-12-02 16:30:31

标签: c# linq-to-sql

我的查询类似于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,即使表格被正确更新。

1 个答案:

答案 0 :(得分:2)

dc.GetChangeSet()告诉您在调用SubmitChanges()时,LINQ to SQL上下文计划进行多少次更改。它不跟踪数据库报告的受影响行数。

如果在致电int affectedRows = dc.GetChangeSet().Updates.Count;之前致电SubmitChanges,您会看到预计会影响多少行。致电SubmitChanges后,没有更多待处理的更改,因此您将始终获得零计数。