是的,由于某种原因,Linq to SQL会将所有删除操作作为最后的操作。而且没有办法改变这一点。
也许有。我没有研究代码生成器DataContext,看看是否可以覆盖那里的内容。
您可以根据需要多次调用SubmitChanges()。首先需要删除时,我的解决方法是标记删除,调用SubmitChanges(),然后执行插入和更新,然后再次调用SubmitChanges。
您可以将所有内容包装在TransactionScope中:
var deletables = from toDelete in db.NamedValues where toDelete.Name == knownValue.Name select toDelete; using (var scope = new TransactionScope()) { db.NamedValues.DeleteAllonSubmit(deletables); db.SubmitChanges(); db.NamedValues.InsertonSubmit(knownValue); db.SubmitChanges(); scope.Complete(); }


