gpt4 book ai didi

entity-framework - 如何拦截 SELECT 查询

转载 作者:行者123 更新时间:2023-12-03 07:28:37 24 4
gpt4 key购买 nike

我正在探索 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).

关于entity-framework - 如何拦截 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com