2012-04-17 50 views
0

我該如何調用唯一的SaveChanges來影響我使用的所有存儲庫中的所有更改? 我應該創建一個包含所有存儲庫和Save方法的類嗎? 做什麼最好的方法是?SaveChanges影響多個存儲庫


我想這一點:

public ActionResult Create() 
{ 
    Product Product = new Product() { Id = 1, Name = "test", Amount = 1 }; 

    if (_productService.Insert(Product)) 
    { 
     context.SaveChanges(); 

     return View(); 
    } 

    return RedirectToAction("Index"); 
} 

這是正確的?

回答

0

最好的方法稱爲工作單元,它通常是傳遞給存儲庫構造函數的EF上下文的包裝類。你在這個新班上打電話Save

+0

因此,我需要創建Entitie的實例(從DbContext繼承),將它傳遞給存儲庫,然後調用entitie.SaveChanges? – MuriloKunze 2012-04-17 19:18:44

+0

否,您可以在資源庫之外調用保存更改。版本庫不負責保存數據,它是新的上下文封裝的責任。 – 2012-04-17 19:23:22

+0

是的,我的意思是。 – MuriloKunze 2012-04-17 19:26:41

0

將IDbContext/ObjectContext傳遞給您的存儲庫的構造函數。使用存儲庫並調用Save on context而不是存儲庫。

我也會重新考慮你是否需要存儲庫。

+0

是的,我看到拉迪斯拉夫說儲存庫不好..我需要一些驗證之前保存數據..所以,我只使用服務層,並在它裏面我調用IDbContext方法?這個好嗎? – MuriloKunze 2012-04-17 19:40:03