MyDbContext.UsersやMyDbContext.Studentsなどを呼び出すときなど、私たちのDbContextでDbContextによって実行されるSELECTクエリに対して、新しい機能を追加する必要があります(UserとStudentはBaseEntityクラスから継承します。本物のIsActiveが含まれている場合)、それらを傍受し、この基本型のBaseEntityであるかどうかをチェックし、何らかの方法でクエリを変更できます。たとえば、IsActiveがtrueであるかどうかを確認するwhere句を追加します。私はIDbCommandInterceptorインターフェイスを調べようとしましたが、おそらく私に関係するものを含めて、ReaderExecutingなど、MyDbContextのdbsetsだけでなく、データベース上で実行されるすべての種類のSELECTステートメントをインターセプトします。
これをどのようにして正しく行うことができますか?Entity Framework 6.3でインターセプトメカニズムを使用する方法は?
おかげで、ashilon
優秀な回答Daniel!素晴らしい説明と素晴らしい回避策。小さな質問:DbSetの代わりにIQueryableを返す理由はありますか? StudentsDbSetもIQueryableである必要がありますか?どうもありがとう。 – ashilon
Where節を実行すると、これはIQueryableになります。これはもはやDbSetを返しません。 ContextにはDbSetプロパティが必要です。これは、エンティティフレームワークがマッピングをフックアップする方法を知っているからです、と私は信じています。 –