SELECTクエリをインターセプトする方法

entity-framework entity-framework-core

質問

私はEntity Framework 7を検討しており、「SELECT」クエリをインターセプトする方法があるかどうかを知りたいと思います。エンティティが作成、更新、または削除されるたびに、エンティティに現在の日付と時刻がスタンプされます。

SELECT * 
FROM MyTable
WHERE DeletedOn IS NOT NULL

すべてのSELECTクエリで削除されたデータを除外したいと思います(上記のWHERE節を参照)。 Entity Framework 7を使用してそれを行う方法はありますか?

人気のある回答

基礎となるインフラストラクチャがどのように見えるか、アプリケーションとEntity Frameworkの間に抽象概念があるかどうかはわかりません。 DbSet<T>DbSet<T>て作業していると仮定して、削除されたデータを除外する拡張メソッドを書くことができます。

        public class BaseEntity
        {
                public DateTime? DeletedOn { get; set; }
        }
        public static class EfExtensions
            {
                public static IQueryable<T> ExcludeDeleted<T>(this IDbSet<T> dbSet) 
                    where T : BaseEntity
                {
                    return dbSet.Where(e => e.DeletedOn == null);
                }
            }
      //Usage
      context.Set<BaseEntity>().ExcludeDeleted().Where(...additional where clause).


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ