6
我一直在尋找實施這些模式的項目,我正在努力。 UoW具有數據庫上下文,然後使用該上下文實例化多個存儲庫。我的問題是處理上下文。我見過的很多文章都將存儲庫設置爲IDisposable,然後他們處理上下文。這讓我困惑不已,我是否錯過了某些東西或者(在我的情況下)它是否應該是處理上下文的UoW?另外,我是否應該在我的存儲庫上實現IDisposable?工作單元,知識庫和IDisposable
感謝
克里斯
我一直在尋找實施這些模式的項目,我正在努力。 UoW具有數據庫上下文,然後使用該上下文實例化多個存儲庫。我的問題是處理上下文。我見過的很多文章都將存儲庫設置爲IDisposable,然後他們處理上下文。這讓我困惑不已,我是否錯過了某些東西或者(在我的情況下)它是否應該是處理上下文的UoW?另外,我是否應該在我的存儲庫上實現IDisposable?工作單元,知識庫和IDisposable
感謝
克里斯
是,工作的單位應實施IDisposable
和處置方面,而不是倉庫。
這裏有一個例子:
public interface IUnitOfWork : IDisposable
{
void Commit();
}
public class EntityFrameworkUnitOfWork<TContext> : IUnitOfWork
where TContext : DbContext, new()
{
public EntityFrameworkUnitOfWork()
{
this.DbContext = new TContext();
ConfigureContext(this.DbContext);
}
protected virtual void ConfigureContext(TContext dbContext)
{
dbContext.Configuration.ProxyCreationEnabled = false;
dbContext.Configuration.LazyLoadingEnabled = false;
dbContext.Configuration.ValidateOnSaveEnabled = false;
}
protected TContext DbContext { get; private set; }
public void Commit()
{
this.DbContext.SaveChanges();
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposing)
{
return;
}
if (this.DbContext == null)
{
return;
}
this.DbContext.Dispose();
this.DbContext = null;
}
}