我正在寻找以下建议。
我需要创建一个可在数据库和Web服务之间互换的DAL。 我正在开发C#和WPF。
有没有人看到IUnitOfWork的任何好的实现,并允许使用某种DI切换进出不同的DAL?
编辑
所以做了一些阅读之后。我决定使用存储库模式。 Rep模式接受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吗?我很害怕一个线程可能会在另一个线程中完成等等。