私は最新のASP.Net Core RC2、Web APIを、Windowsのみを対象としています。フレームワーク4.6.1。依存性注射とスコープ?
標準のリポジトリパターンの役割は、コアがコントローラ依存性注入を処理する方法とは異なります。私はちょうどこれが適切なアプローチであることを確かめたいと思います。そこには多くのドキュメンテーションがありません(または矛盾します)。
私はこれを今設定した方法で、CRUD操作のための標準リポジトリインタフェースと、これらの操作を実装する関連クラスを持っています。
リポジトリをコントローラに注入しています。私が撮影した2つのステップが(Startup.cs
で、ConfigureServices()
)は次のとおりです。
services.AddSingleton<IMyCustomRepository, MyCustomRepository>();
その後、リポジトリに取っている私のコントローラ:
public MyCustomController(IMyCustomRepository repository) { }
私の最終目標は含めて、ここでEFコアを得ることですInMemoryProvider。
これはこれまで正しく構築されていますか?私の主な懸念事項の1つは、Entity FrameworkのようなORMを使用する場合、リポジトリパターンが必要ではないことについて常に読んでいますが、これがEFコアにどのように当てはまるかはわかりません。
EFコアを使用している場合は、AddSingletonを使用しないでください。これはScopedのDbContextに依存しているためです(代わりに使用する必要があります)。
ありがとうございます。 'MyDbContext'はリポジトリパターンでどこに"生きている "のですか?私はマップのすべての例を見てきました。私は具体的にCore RC2について知りたいと思っています。これはリポジトリに注入され、メンバとして保存されるはずですか?オンデマンドで 'using()'ブロックで囲まれているのも見てきました。 – Patrick
@Patrick:依存性注入/ IoCコンテナを持つWebアプリケーションで 'using'ブロックを使用するべきではありません。なぜなら、' using'ブロックを離れた後にコンテナが破棄され、例外はある。 ASP。要求が完了すると、.NET Coreは廃棄処理を行います(有効範囲内で登録したと仮定して) – Tseng
@Tseng Agreed。 DbContextはこの設定でコンストラクタ経由でリポジトリに注入され、メンバとして保存されるべきですか? – Patrick