0

CRUD を実行する MVC アプリケーションにデータベース リポジトリ レイヤーを追加しました。コントローラーで複数の db リポジトリを呼び出す必要がある場合があり、必要な db リポジトリを呼び出すことでこれを行います。これにより、複数の db コンテキスト オブジェクトが作成されます。リポジトリごとに 1 つ。複数の db コンテキスト オブジェクトが必要ですか、それとも単一の db コンテキストをリポジトリ オブジェクトに渡す必要がありますか?

4

2 に答える 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 に答える