0

我正在为以下内容寻求一些建议。

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

4

1 回答 1

1

如果您使用 NHibernate,您应该查看 SharpArchitecture 。contrib 项目涵盖了您的方案。

于 2009-12-03T18:54:39.413 回答