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> 를 사용한다고 가정 해 보겠습니다. 삭제 된 데이터를 제외하는 확장 메서드를 작성할 수 있습니다.

        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).



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.