MVC+LINQToSQL的Repository模式之(二)數(shu)據(ju)基類
namespace Data.TEST
{
/// <summary>
/// 數據操作基類
/// </summary>
public abstract class TESTRepositoryBase
{
/// <summary>
/// 數據庫基類
/// </summary>
protected Entity.TEST.LinqTESTDataContext _db = (Entity.TEST.LinqTESTDataContext)DbFactory.Intance("TEST", System.Threading.Thread.CurrentThread);
/// <summary>
/// 統一提交動作
/// </summary>
protected 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);
}
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();
}
}
}
}
}