web-dev-qa-db-ja.com

リポジトリパターンEF Core Updateメソッド

Entity Framework Coreを使用したMVC Webアプリケーションでのリポジトリパターンと作業単位パターンの使用について質問があります。

現在、コントローラーに更新機能を実装しています。現在、この時点では、エンティティを更新するための最良の方法は何なのかわかりません。私はいくつかのビデオを見て、Updateメソッドは次のようにレポジトリに存在してはいけないと言っていました。

public T Update(T entity)
{
  DbSet.Attach(entity);
  var entry = Context.Entry(entity);
  entry.State = System.Data.EntityState.Modified;
}

つまり、コントローラーで次のようにする必要があります。

public IActionResult Edit(int id, [Bind("NeighbourhoodGroup,Neighbourhood,NeighbourhoodId")] Neighbourhoods neighbourhoods)
{
  var neighbourhoodsFound = unitOfWork.Neighbourhoods.Get(id);
  neighbourhoodsFound.Neighbourhood = neighbourhoods.Neighbourhood;
  neighbourhoodsFound.NeighbourhoodGroup = neighbourhoods.NeighbourhoodGroup;
}

ただし、オブジェクトに多くのプロパティがある場合でも、すべてのコントローラーでこれを行う必要がありますか?

誰かが私に最善のアプローチが何であるかについていくつかのアドバイスを与えることができることを願っています。

6
Azzaronn

リポジトリでは、次のようにシンプルな更新機能を使用できます。

public void Update(T entity)
    {
        DbSet.Attach(entity);
        ApplicationContext.Entry(entity).State = EntityState.Modified;
    }

コントローラー内または更新を行う場所からエンティティを取得できます。IDでエンティティを取得できます。エンティティで変更するすべてのプロパティを変更し、状態を設定するリポジトリからUpdateメソッドを呼び出します。変更し、最後にEFコンテキストでSaveまたはSaveAsyncメソッドを呼び出します。 EFコンテキストはUnitOfWorkで公開する必要があります。

詳細な説明については、この投稿をご覧ください。非常に参考になります。 EFリポジトリパターン

0
DNakevski