使用多个数据库实现工作单元

时间:2015-07-26 06:01:11

标签: c# linq-to-sql

我正在尝试按照this篇文章来实现工作单元和通用存储库。唯一的区别是我的应用程序中有多个数据库上下文。我想出了下面的实现,但至少可以说是尴尬。最好的方法是什么?

public class UnitOfWork : IDisposable
{
    private MainDBDataContext MainDBDataContext = new MainDBDataContext();
    private ReferenceDBDataContext ReferenceDBDataContext = new ReferenceDBDataContext();
    private ProjectDBDataContext projectDBDataContext = new ProjectDBDataContext();

    private VehicleRepository vehicleRepository;
    private AccountRepository accountRepository;

    public VehicleRepository VehicleRepository
    {
        get
        {
            if (this.vehicleRepository == null)
            {
                this.vehicleRepository = new VehicleRepository(projectDBDataContext,ReferenceDBDataContext);
            }
            return vehicleRepository;
        }
    }

    public AccountRepository AccountRepository
    {
        get {
            if (this.accountRepository == null)
            {
                this.accountRepository = new AccountRepository(projectDBDataContext);
            }
            return accountRepository;
        }
    }

    public void Save()
    {
        projectDBDataContext.SubmitChanges();
        ReferenceDBDataContext.SubmitChanges();
        MainDBDataContext.SubmitChanges();
    }


    private bool disposed = false;

    protected virtual void Dispose(bool disposing)
    {
        if (!this.disposed)
        {
            if (disposing)
            {
                projectDBDataContext.Dispose();
                MainDBDataContext.Dispose();
                ReferenceDBDataContext.Dispose();
            }
        }
        this.disposed = true;            
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

}

0 个答案:

没有答案