2013-05-07 21 views
0

我已经将数据库存储库层添加到执行CRUD的MVC应用程序中。有时我的控制器需要调用多个数据库存储库,我通过调用我需要的db数据库来执行此操作。这又会创建多个数据库上下文对象。每个存储库一个。应该有多个数据库上下文对象,还是应该将单个数据库上下文传递给存储库对象?MVC数据库上下文过度使用?

回答

1

在你的控制器中你应该使用一个dbContext。因为当你尝试在db中更新你的模型时,你可能会遇到错误。由于不同的dbContext。

检查HERE

+0

感谢您的帮助。这是一种享受!现在我必须通过我所有的代码并改变它。 – user1476207 2013-05-07 09:18:15

+0

很高兴,它有帮助... – 2013-05-07 09:19:58

1

应该只有一个,我高度推荐使用工作模式的单位:

这里有一个快速和简单的例子:

public interface IUoW : IDisposable 
{ 
    MyDbContext DbContext { get; set; } 

    void SaveChanges(); 
} 

public class UoW : IUoW 
{ 
    public MyDbContext DbContext { get; set; } 

    public UoW() 
    { 
     DbContext = new MyDbContext(); 
    } 

    public void SaveChanges() 
    { 
     DbContext.SaveChanges(); 
    } 

    public void Dispose() 
    { 
     DbContext.Dispose(); 
    } 
} 

您需要为一次实例UOW每个请求并将其传递到您的存储库:

public class MyRepository 
{ 
    private MyDbContext _context; 

    public MyRepository(IUoW uow) 
    { 
     _context = uow.MyDbContext; 
    } 

    // your crud methods 
} 

当然,这只是一个非常简单的例子,我看到许多人以不同的方式实现这个模式。

+0

谢谢。我已经实施这种模式是有效的! – user1476207 2013-05-07 09:18:42

相关问题