我们可以在存储库中调用多个查询吗?

问题描述 投票:0回答:1

我有以下代码从数据库中获取定制产品,但可以,但是下面有问题,

var customProducts = _context.CustomProduct.Where(x => x.CustomReference == customReference);
var customProductIds = customProducts.Select(x => x.ProductId);
var disabledDirectoryProductIds = customProducts.Where(x => !x.IsDisabled).Select(x => x.ProductId);

var Products = _context.Product.Where(x => (x.IsDefault || customProductIds.Contains(x.Id)) &&
    !disabledDirectoryProductIds.Contains(x.Id)).ToList();
  1. 是要生成单个SQL查询还是几个?
  2. 即使也调用Product表,也可以将此方法放在CustomProductRepository中吗?

  3. 可以改善吗?

  4. 我有下面的代码从数据库中获取定制产品,但可以,但是下面有问题,var customProducts = _context.CustomProduct.Where(x => x.CustomReference == customReference); var ...

c# sql-server entity-framework-6 .net-4.6
1个回答
0
投票
  1. 是的,查询被延迟,直到您调用ToList。我认为,在您之前的情况下,所有以前的调用仅向在SQL中转换的查询添加子句,对它进行评估。Deferred Execution of LINQ QueryDeferred Vs Immediate Query Execution in LINQDeferred vs Immediate Query Execution in LINQWhat are the benefits of a Deferred Execution in LINQ?

© www.soinside.com 2019 - 2024. All rights reserved.