1

私はEntityFrameworkを使用しており、リポジトリパターンと組み合わせて作業ユニットパターンを学習しようとしています。

私が理解したことから今まで、作業単位はエンティティオブジェクトに加えられた変更を追跡する責任があります。ただし、DataContextは同じことをしていませんか?

つまり、作業単位パターンの実装は、すべてのメソッドで同じコンテキストを使用するように「強制」するようなものではありませんか?

public class EFUnitOfWork : IUnitOfWork
{
    EFContext context = new EFContext();
    public void Commit()
    {
        context.SaveChanges();
    }
}

public class ProductsRepository(IUnitOfWork unitOfWork)
{
    /* CRUD methods here */
}

public void InsertProducts()
{
    var unitOfWork = new EFUnitOfWork(); // <-- this will normally be injected via constructor
    var productsRepository = new ProductsRepository(unitOfWork);

    productsRepository.Insert(new Product { Name = "Product 1", Description = "Description" });
    productsRepository.Insert(new Product { Name = "Product 2", Description = "Description" });
    productsRepository.Insert(new Product { Name = "Product 3", Description = "Description" });

    unitOfWork.Commit();
}

これは、Unit of WorkをEntityFrameworkで使用する正しい方法ですか?

4

1 に答える 1

0

はい、同じDataContextを共有しています。これがあなたを助けるチュートリアルです: http ://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns- in-an-asp-net-mvc-application

于 2012-11-05T12:29:10.580 に答える