首页 > 解决方案 > 使用存储库时 where 条件生成不带过滤器的 sql

问题描述

我正在使用带有 LinQ 的实体框架并尝试使用存储库从数据库表中获取所有行(在 where 语句中过滤)我没有查询的 where 语句,但如果我直接使用数据库上下文(使用相同的 where 声明)我有它。

方式1:使用存储库和linq的代码:

IEnumerable<LabOrder> orders = _repLabOrders.LabOrders.Where(o => 
o.SendDate.Month == month && o.SendDate.Year == year && o.Lab == 
user.CodKais.GetValueOrDefault());

存储库类

public class EFLabOrderRepository : ILabOrderRepository<LabOrder>
{
    private EFDbContext _context = new EFDbContext();
    public IEnumerable<LabOrder> LabOrders => _context.LabOrders;
}

方式2:直接编码数据库上下文:

IEnumerable<LabOrder> orders = _context.LabOrders.Where(o => 
o.SendDate.Month == month && o.SendDate.Year == year && o.Lab == 
user.CodKais.GetValueOrDefault());

最终查询结果:

左查询 WITHOUT where - Right WITH where

如何使用存储库调用获取带有 where 语句的查询?

谢谢。

标签: c#sqlentity-framework

解决方案


推荐阅读