2013-05-07 17 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

相關問題