gpt4 book ai didi

c# - 如何将谓词与 Included 属性一起包含?

转载 作者:太空狗 更新时间:2023-10-30 01:18:15 25 4
gpt4 key购买 nike

目前我有一个函数允许我查询数据库,同时在结果中包含一些其他相关表,以防止返回命中数据库,否则我知道如果不这样做会发生:

public class EntityRepository<TEntity> : IEntityRepository<TEntity> where TEntity : class
{
protected DbSet<TEntity> dbSet;

private readonly DbContext dc;

public EntityRepository()
{
dc = new DbContext(Utility.Config.GetEntityDbConnection());
dbSet = dc.Set<TEntity>();
}


public IQueryable<TEntity> GetAllIncluding(params Expression<Func<TEntity, object>>[] includeProperties)
{
foreach (var includedProperty in includeProperties)
{
dbSet.Include(includedProperty).Load();
}

return dbSet;
}
}

但是,我还需要能够在包含之前使用一个 where 子句,以便它在触发 Load() 方法时不会尝试查询整个数据库。

我正在尝试做这样的事情(这显然行不通,因为您可以像下面的示例代码一样重新分配 dbset)。

    public IQueryable<TEntity> SearchForIncluding(Expression<Func<TEntity, bool>> predicate, params Expression<Func<TEntity, object>>[] includeProperties)
{
dbset = dbSet.Where(predicate); //THIS DOESN'T WORK OBVIOUSLY

foreach (var includedProperty in includeProperties)
{
dbSet.Include(includedProperty).Load();
}
}

最佳答案

您应该能够在 IncludeLoad 之间对 Where 的调用中应用谓词,如下所示:

foreach (var includedProperty in includeProperties)
{
dbSet.Include(includedProperty).Where(predicate).Load();
}

关于c# - 如何将谓词与 Included 属性一起包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112285/

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