我正在为以下内容寻求一些建议。
我需要创建一个可在数据库和 Web 服务之间互换的 DAL。我正在使用 C# 和 WPF 进行开发。
有没有人看到任何好的 IUnitOfWork 实现并允许使用某种 DI 切换不同的 DAL?
编辑
所以在做了一些阅读之后。我决定使用存储库模式。代表模式采用 IUnitOfWork。上面的内容相反。这也是我所说的开关输入或输出的一个例子。
NHibernateProductRepository : IRepository<Product>
{
private IUnitOfWork _unitOfWork = null;
public NHibernateProductRepository(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
}
WebServiceProductRepository : IRepository<Product>
{
private IUnitOfWork _unitOfWork = null;
public WebServiceProductRepository (IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
}
....
public static class Bootstrapper
{
public static void Load()
{
// Some sort of IOC.. Which will also be used for DI.
}
}
所以我想我需要 IUnitOfWork 方面的帮助。Web 服务存储库会很棘手。那么如何创建某种事务,以及如何排队等。
最后一件事,在 WPF 环境中,多个线程可能会将内容保存到数据库中,因此是否应该为每个线程创建自己的 UnitOfWork?我害怕一个线程可能会在另一个线程中提交等等。