私はAsp.net MVCプロジェクトに取り組んでいます。私はlinkに続いて汎用リポジトリを作成しました。すべてのテーブルプロパティをUOWクラス(汎用リポジトリパターン)にするとよいですか?
public class UnitOfWork : IDisposable
{
private LeisureEntities context = new LeisureEntities();
private IGenericInterface<cust_order> _customerOrderRepository;
private IGenericInterface<tblCustomer> _customerMasterRepository;
public IGenericInterface<cust_order> CustomerOrderRepository
{
get
{
return _customerOrderRepository = new GenericRepository<cust_order>(context);
}
}
public IGenericInterface<tblCustomer> CustomerMasterRepository
{
get
{
return _customerMasterRepository = new GenericRepository<tblCustomer>(context);
}
}
public void SaveChanges()
{
context.SaveChanges();
}
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);
}
}
UOWクラスのすべてのリポジトリをプロパティとして宣言し、このUOWをコントローラまたはサービス層で直接使用できますか。つまり、DALの1つの汎用リポジトリクラスと1つのUOWクラスには、dbテーブルのすべてのプロパティを持つクラスが2つしかありません。
私はテーブルごとに別々のUOWを作成する必要があります。
私はデータベースの最初のアプローチを使用しています。
お勧めします。
これは素晴らしいですが、私はこのプロジェクトの一部を理解することができます。私にはたくさんの質問がありますが、答えはありません。なぜジェネリックリポジトリクラスのsavechanges()、どのようにトランザクションを達成すると、 1つのcategoryserviceクラスのコードを貼り付けることができれば、 –
に役立ちます。これは、このGeneric Repositoryを通って作業しているからです。 EF内のすべてのトランザクションは、デフォルトでトランザクションです。エンティティのEFプロキシですべてが発生しています。たとえば、20個のエンティティプロパティを変更することができます。また、SaveChangesを呼び出すと、すべてが一度に渡されます。サービス間に共通の機能を置くことができるGenericServiceを実装することができます –