同じデータコンテキストを共有する作業単位パターンがあります。保存中にエラーが発生した場合は、エラーをキャッチして、次のイベントに進みます。ただし、エラーが発生した元のイベントがまだ追加されているかのように、同じエラーが発生します。元のエラーの原因となった項目を削除するために、作業単位を正常にリセットする方法はありますか? 下のキャッチのアイテムを削除しても、まだ機能しませんでした。
また、イベントのリストを保持して、ID がプロパティで既に取得されているかどうかを確認し、データベースから一度だけ取得しますが、それが重要かどうかはわかりません。
EventsRepository.Add(tournament);
try
{
UnitOfWork.Commit();
}
catch (Exception ex)
{
// Log, Go To Next Event To Process
}
UnitOfWork.cs
public class UnitOfWork : IUnitOfWork
{
private readonly IDatabaseFactory _databaseFactory;
private DataContext _dataContext;
public UnitOfWork(IDatabaseFactory databaseFactory)
{
_databaseFactory = databaseFactory;
}
protected DataContext DataContext
{
get { return _dataContext ?? (_dataContext = _databaseFactory.Get()); }
}
public void Commit()
{
DataContext.Commit();
}
public void SaveChanges()
{
DataContext.SaveChanges();
}
public void Refresh(object o)
{
DataContext.Entry(o);
}
public void Commit(bool autoDetectChanges)
{
DataContext.Configuration.AutoDetectChangesEnabled = false;
DataContext.Commit();
DataContext.Configuration.AutoDetectChangesEnabled = true;
}
}