2011-02-16 154 views
1

我有这个事情:为什么dataContext.GetChangeSet()。Deletes.Count()总是返回0?

var customerIdsToDelete = new {1, 2, 3}; 
var dataContext = new DataContext(); 
var customersToDelete = (from c in data.Customers 
         where customerIdsToDelete.Contains(c.CustomerID) 
         select c); 
data.Customers.DeleteAllOnSubmit(customersToDelete); 
data.SubmitChanges(); 

var deletedCount = data.GetChangeSet().Deletes.Count(); 

即使当客户成功删除deletedCount将为0

为什么?那么删除customers的次数的“正确”方法是什么?

回答

3

因为您已经提交了更改。一旦对SubmitChanges进行了调用,则不会删除,因此(正确)返回零计数。要获得删除的项目的数量(或者被删除),那么试试这个(即确定计数推动改变之前):

... 

var deletedCount = data.GetChangeSet().Deletes.Count(); 
data.SubmitChanges(); 

... 
+0

人力资源管理,如果由于某种原因在变更集中的客户不会被删除(也许有一些数据库约束阻止了这一点)有无论如何来确定? – 2011-02-16 00:36:59

0

请问您的SubmitChanges方法提供了一个覆盖,需要一个回调?

我已经工作了一下使用Silverlight和RIA服务,以及DomainContext的的SubmitChanges方法的形式为SubmitChanges(Action<SubmitOperation>, object userState)

我们称之为如下的控制装置:

mycontext.SubmitChanges(submitOperation => 
{ 
    //here, inside the callback, you can inspect 
    //the submitOperation for the results 
    //of the SubmitChanges method 
}, null);