SaveChanges影响多个存储库

问题描述:

我该如何调用唯一的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"); 
} 

这是正确的?

最好的方法称为工作单元,它通常是传递给存储库构造函数的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

将IDbContext/ObjectContext传递给您的存储库的构造函数。使用存储库并调用Save on context而不是存储库。

我也会重新考虑你是否需要存储库。

+0

是的,我看到拉迪斯拉夫说储存库不好..我需要一些验证之前保存数据..所以,我只使用服务层,并在它里面我调用IDbContext方法?这个好吗? – MuriloKunze 2012-04-17 19:40:03