gpt4 book ai didi

asp.net-mvc - 如何避免在 Entity Framework 中重复相同的地方

转载 作者:行者123 更新时间:2023-12-01 11:28:50 26 4
gpt4 key购买 nike

在我的项目中,我不使用物理删除,我只是对所有表使用逻辑“软删除”。

我将此子句用于所有查询:

.Where(row => row.IsDeleted == false)

我想要一种方法来避免在所有查询中重复此 where 子句。

我有这样的方法来获取数据:

public new IDbSet<TEntity> Set<TEntity>() where TEntity : class
{
return base.Set<TEntity>();
}

我这样调用它:

_categories = _uow.Set<Category>();

我该怎么做?

第一个想法:

添加一个基类并将 Deleted 列放入其中,并从该基类继承所有类。这样好吗?

我使用 UnitOfWork 和代码优先。

最佳答案

我不会仅仅为了重用单个属性而创建基类。相反,我会创建一个接口(interface)和一个扩展方法来封装和重用 where 语句。类似于以下内容:

public static class EntityFrameworkExtentions
{
public static ObservableCollection<TEntity> Alive<TEntity>(this DbSet<TEntity> set)
where TEntity : class, ISoftDeleteAware
{
var data = set.Where(e => e.IsDeleted == false);
return new ObservableCollection<TEntity>(data);
}
}

接口(interface)声明

public interface ISoftDeleteAware
{
bool IsDeleted { get;set;}
}

用法:

var coll = DbContext.Categories.Alive();

关于asp.net-mvc - 如何避免在 Entity Framework 中重复相同的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113000/

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