【发布时间】:2019-11-25 16:28:03
【问题描述】:
我使用了实体框架的 UnitOfWork 模式在线教程,因为我已经有一段时间没有使用它了。我很困惑为什么在教程中 DataContext 是公共 UnitOfWork 构造函数的参数。这意味着如果我在应用程序的另一层使用 UnitOfWork,另一层必须知道 DataContext。这似乎不是一个很好的关注点分离。我错过了什么吗?
工作单元:
public class UnitOfWork : IUnitOfWork
{
private readonly PurchasingDataContext _context;
public UnitOfWork(PurchasingDataContext context)
{
_context = context;
Items = new ItemRepository(_context);
Manufacturers = new LabelerRepository(_context);
Quotes = new QuoteRepository(_context);
Vendors = new VendorRepository(_context);
Contacts = new ContactRepository(_context);
}
public IItemRepository Items { get; private set; }
public ILabelerRepository Manufacturers { get; private set; }
public IQuoteRepository Quotes { get; private set; }
public IVendorRepository Vendors { get; private set; }
public IContactRepository Contacts { get; private set; }
public int Complete()
{
return _context.SaveChanges();
}
public void Dispose()
{
_context.Dispose();
}
}
界面:
public interface IUnitOfWork : IDisposable
{
IContactRepository Contacts { get; }
IItemRepository Items { get; }
ILabelerRepository Manufacturers { get; }
IQuoteRepository Quotes { get; }
IVendorRepository Vendors { get; }
int Complete();
}
【问题讨论】:
-
“我错过了什么吗?” - 依赖注入。
标签: c# entity-framework design-patterns unit-of-work