3

ここで少しご案内できればと思います。DbContext の MSDN ページ ( http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext%28v=vs.103%29.aspx ) には、次のように記載されています。 -Of-Work および Repository パターンを使用して、データベースにクエリを実行し、変更をグループ化して、1 つの単位としてストアに書き戻すことができます。」

リポジトリ パターンについての私の理解は、それがデータ永続化レイヤーの抽象化を提供するということです。EF に結合された何かの具体的な実装は、どのように抽象化と見なすことができますか?

また、それを Unit of Work パターンとしてどのように活用しますか? 現在、私の作業単位には ObjectContext プロパティと、リポジトリごとに 1 つのプロパティがあります。

public class UnitOfWork : IUnitOfWork
{
    private TPSEntities _context = new TPSEntities();
    private ICustomerRepository _customerRepository;
    private IUsersRepository _UsersRepository;

    public ICustomerRepository CustomerRepository
    {
        get
        {
            if (_customerRepository == null)
            {
                _customerRepository = new CustomerRepository(_context);
            }
            return _customerRepository;
        }
    }

    public IUsersRepository UsersRepository
    {
        get
        {
            if (_UsersRepository == null)
            {
                _UsersRepository = new UsersRepository(_context);
            }
            return _UsersRepository;
        }
    }


    public void Save()
    {
        _context.SaveChanges();
    }

    public void Save(string storedProcedure)
    {
        _context.SaveChanges();
        //_context.ExecuteStoreCommand
    }

    private bool disposed = false;

    protected virtual void Dispose(bool disposing)
    {
        if (!this.disposed)
        {
            if (disposing)
            {
                _context.Dispose();
            }
        }
        this.disposed = true;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

次に、Unit of Work オブジェクトを DI を介してコントローラーに挿入し、離れます。

DbContext でこれを行うより良い方法はありますか?

ありがとう、

クリス

4

1 に答える 1