首页 > 解决方案 > 在 Asp.Net Core 的 Find 方法中使用 Include 和 Where

问题描述

我的控制器中有这段代码:

var project = await _context.Projects
            .Include(p => p.Customer)
            .SingleOrDefaultAsync(m => m.Project_Id == id);

但是我想在编写此方法的通用存储库中使用

通用存储库:

public async Task<T> GetByIdIncludes(Expression<Func<T, bool>> predicate, string includes = "")
{
    return await _dbContext.Set<T>().Where(predicate).Include(includes).FirstOrDefaultAsync();  
}

并在我的控制器中替换为此代码

我的控制器:

var project = await _genericRepository.GetByIdIncludes(F => F.Customer_Id == id, "Customer");

但是FindByIdInclude通用存储库中的方法被返回null给控制器,为什么?

标签: c#asp.net-core-mvc

解决方案


将 include 放在示例中的 where 之前

public async Task<T> GetByIdIncludes(Expression<Func<T, bool>> predicate, string includes = "")
        {
            return await _dbContext.Set<T>().Include(includes).Where(predicate).FirstOrDefaultAsync();  
        }

推荐阅读