有关使用NHibernate和/或Web服务的UnitOfWork的建议

时间:2009-12-03 02:39:00

标签: c# nhibernate unit-of-work

我正在寻找以下建议。

我需要创建一个可在数据库和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吗?我很害怕一个线程可能会在另一个线程中完成等等。

1 个答案:

答案 0 :(得分:1)

如果你选择NHibernate,你应该看看SharpArchitecture。 contrib项目涵盖了您的场景。