Mar*_*tin 5 entity-framework entity-framework-core
我正在探索实体框架7,我想知道是否有办法拦截"SELECT"查询.每次创建,更新或删除实体时,我都会使用当前日期和时间标记实体.
SELECT *
FROM MyTable
WHERE DeletedOn IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
我希望我的所有SELECT查询都排除已删除的数据(请参阅上面的WHERE子句).有没有办法使用Entity Framework 7?
我不确定您的底层基础设施是什么样的,以及您的应用程序和实体框架之间是否有任何抽象。假设您正在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).
Run Code Online (Sandbox Code Playgroud)