首先,我们应该把数据提交方法做到一个数据库基类里,就像这样
public abstract class dbBase
{
public virtual void SubmitChanges()
{
ChangeSet cSet = db.GetChangeSet();
if (cSet.Inserts.Count > 0
|| cSet.Updates.Count > 0
|| cSet.Deletes.Count > 0)
{
try
{
db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
//db.SubmitChanges();
}
catch (System.Data.Linq.ChangeConflictException ex)
{
foreach (System.Data.Linq.ObjectChangeConflict occ in db.ChangeConflicts)
{
// 使用当前数据库中的值,覆盖Linq缓存中实体对象的值
occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
// 使用Linq缓存中实体对象的值,覆盖当前数据库中的值
occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
// 只更新实体对象中改变的字段的值,其他的保留不变
occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
}
db.SubmitChanges();
}
}
}
}
所有数据操作对象,都继承它,使用它的SubmitChanges方法就可以了,呵呵
本文转自博客园张占岭(仓储大叔)的博客,原文链接:MVC解决更新冲突问题,如需转载请自行联系原博主。