2012-04-17 7 views
0

私が使用するすべてのリポジトリ内のすべての変更に影響を与える一意のSaveChangesを呼び出すにはどうすればよいですか? すべてのリポジトリと保存メソッドを含むクラスを作成する必要がありますか? どうすればいいですか?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

+0

リポジトリの外部に変更を保存する必要はありません。リポジトリはデータを保存する責任を負いませんが、新しいコンテキストラッパーが責任を負います。 –

+0

はい、私はそれを意味します。 – MuriloKunze

0

IDbContext/ObjectContextをリポジトリのコンストラクタに渡します。リポジトリで作業し、リポジトリではなくコンテキストで保存を呼び出します。

リポジトリが必要な場合は、私も考えています。

+0

ええ、私はLadislavがリポジトリがうまくいかないと言っています。データを保存する前に検証が必要です。サービスレイヤのみを使用し、その内部でIDbContextメソッドを呼び出すのはどうですか?これはいいですか? – MuriloKunze

関連する問題