質問: obj.MovieId); DbContext.Entry(movie).CurrentValues.SetValues(obj); DbContext.SaveChanges(); } ``` 私の本当の質問は、基本的にはすでに(より多くの機能と最適化を備えた)汎用リポジトリであるものに、なぜ汎用リポジトリをラップするのでしょうか?
回答: あまり大げさではなく、コメントスレッドに基づいて自分の質問に答えたいと思います。 一般的なリポジトリパターンは、Entity Framework、xHibernate、Dapper、PetaPocoなどのオブジェクトリレーショナルマッパー(ORM)の時代の前の時代から持ち越されたものです。 ORMの登場により、リポジトリパターンにあるすべての機能がORM自体にカプセル化されました。 たとえば、Entity Frameworkはデフォルトで、DbContextで`.SaveChanges()`を呼び出すたびにTransaction / UnitOfWorkを使用します。 また、 `UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)`を使用して*明示的に*指示しない限り、クエリによって返されたエンティティに加えられた変更を自動的に追跡します。 Generic Repositoriesに関する限り、次のコードは何だと思いますか。 ``` MyDbContext.Set().Add(forecast); ```