ここで少しご案内できればと思います。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 でこれを行うより良い方法はありますか?
ありがとう、
クリス