c# - 在 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
给控制器,为什么?
解决方案
将 include 放在示例中的 where 之前
public async Task<T> GetByIdIncludes(Expression<Func<T, bool>> predicate, string includes = "")
{
return await _dbContext.Set<T>().Include(includes).Where(predicate).FirstOrDefaultAsync();
}
推荐阅读
- java - 我正在尝试从 RFID 读取数据。但是类 RFIDEventListener 没有被调用。有人可以帮我吗?
- html - 让两个 div 元素相互对齐
- android - 如何通过 adb 在 Android 中获取新消息
- java - 如何使用 testcontainers 和 spring-kafka 准备测试
- python - 如何绘制共享 x 轴的每个子图的时间索引?
- sql - 返回最近的记录
- java - 如何在 JPA 中实现带有可选参数的详细搜索查询?
- flutter - 使用 BLoC 的最佳方式是什么,每个屏幕一个 BLoC 还是每个屏幕部分一个 BLoC?
- caching - 监控 STM32H7 上的缓存 ECC 错误?
- c++ - 如何在 main void 中运行函数?