1

asp.net mvcで一般的なリポジトリパターンを使用しています。私はリポジトリのパターンに精通していますが、作業単位ではありません。私はこれについてgoogleからいくつかの記事を読んでいる。しかし、私はasp.net mvcで作業ユニットを使用しているかどうかわかりませんが、どこでef SaveChanges()メソッドを呼び出すCommit()メソッドを使用しますか?私はそれをリポジトリレイヤーまたはサービスレイヤーまたはコントローラーで使用しますか?また、多くの人が、MicrosoftはすでにEntity Frameworkで構築されたUnit Of Workを使用していると言っています。別々に使用する必要はありませんか、コントローラーのレベルや場所を使用する必要はありませんか?asp.net mvcを使用してsavechangesを作業単位パターンに入れますか?

ありがとう、 Abdus Salam Azad。

+0

私はSOのスレッドの数十は、異なる意見を持つことに既に存在しているとして、これを閉じるために投票しています。 –

答えて

1

はい、UnitOfWork.csクラス内で実行する必要があります。その後

UnitOfWork.cs

public sealed class UnitOfWork : IUnitOfWork 
    { 

     private DbContext _dbContext; 

     public UnitOfWork(DbContext context) 
     {   
      _dbContext = context; 
     } 

     public int Commit() 
     { 
      return _dbContext.SaveChanges();// Save changes 
     } 

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

     private void Dispose(bool disposing) 
     { 
      if (disposing) 
      { 
       if (_dbContext != null) 
       { 
        _dbContext.Dispose(); 
        _dbContext = null; 
       } 
      } 
     } 
    } 

あなたはサービス層内のUnitOfWorkのCommitメソッドを呼び出すことができます。

EntityService.cs

public abstract class EntityService<T> : IEntityService<T> where T : BaseEntity 
    { 
     IUnitOfWork _unitOfWork; 
     IGenericRepository<T> _repository; 

     public EntityService(IUnitOfWork unitOfWork, IGenericRepository<T> repository) 
     { 
      _unitOfWork = unitOfWork; 
      _repository = repository; 
     } 

    public virtual void Create(T entity) 
      { 
       _repository.Add(entity); 
       _unitOfWork.Commit(); //saving point   
      } 

} 

あなたはこのパターンについての詳細を学ぶことができます:Generic Repository and Unit of Work Pattern

+0

あなたも答えを受け入れることを願っています... – Sampath

関連する問題