我有一个方法,可以返回产品折扣。
public List<OrderDiscount> GetItemDiscounts(string productId, string itemGroup, string resaleTypeIdNewPolicy, string resaleBusinessBranch)
{
var exeptiondiscount = (from d in Context.Discounts
where d.OrderType == "SO"
&& d.BusinessUnit == "SSP"
&& d.Currency == "BRL"
&& d.BusinessBranch == resaleBusinessBranch
&& ((d.Description == "HGRITEM" && d.ProductId == productId && d.ResaleGroup == resaleTypeIdNewPolicy)
|| (d.UnitMeasure == "PC" && (d.Description == "HGRITEM" && d.ItemGroup == itemGroup && d.ResaleGroup == resaleTypeIdNewPolicy))
|| (d.UnitMeasure == "PC" && d.Description == "HGRCLI" && d.ResaleGroup == resaleTypeIdNewPolicy && d.ProductId == productId)
|| (d.UnitMeasure == "PC" && (d.Description == "HGRCLI" && d.ItemGroup == itemGroup && d.ResaleGroup == resaleTypeIdNewPolicy) || (d.Description == "HGRCLI" && d.ItemGroup == "" && d.ResaleGroup == resaleTypeIdNewPolicy && d.ProductId == ""))
)
select d).ToList();
return exeptiondiscount;
}
第一次在循环中运行时,它会返回正确的结果行。
第二次更改了productId和itemGroup参数,但结果未更改。
如果我在数据库中运行两个查询,结果将有所不同。
我不知道为什么实体框架缓存这些结果。
有人可以帮我吗?
答案 0 :(得分:0)
我找到了解决方法。
只需在.ToList()之前添加“ .AsNoTracking()”。
这将导致实体不缓存查询。