CRUD を実行する MVC アプリケーションにデータベース リポジトリ レイヤーを追加しました。コントローラーで複数の db リポジトリを呼び出す必要がある場合があり、必要な db リポジトリを呼び出すことでこれを行います。これにより、複数の db コンテキスト オブジェクトが作成されます。リポジトリごとに 1 つ。複数の db コンテキスト オブジェクトが必要ですか、それとも単一の db コンテキストをリポジトリ オブジェクトに渡す必要がありますか?
2 に答える
1
Unit of Work パターンを使用することを強くお勧めします。
以下に簡単な例を示します。
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();
}
}
リクエストごとに 1 回 UoW をインスタンス化し、それをリポジトリに渡す必要があります。
public class MyRepository
{
private MyDbContext _context;
public MyRepository(IUoW uow)
{
_context = uow.MyDbContext;
}
// your crud methods
}
もちろん、これは非常に単純な例に過ぎず、人々がこのパターンをさまざまな方法で実装しているのを見てきました。
于 2013-05-07T06:16:49.003 に答える