实体框架核心:使用空间滤镜时出现问题

时间:2020-04-08 15:11:25

标签: c# asp.net-core entity-framework-core-2.2

我有一个方法,该方法首先为DbContext的DbSet创建一个IQueryable,其中包含所有需要的Include子句。

然后,对于该方法中的每个输入参数,我都会测试它是否具有值,如果是,则通过添加Where子句来获得IQueryable的新实例。

除一个参数外,一切都很好。如果该参数具有值并且where子句被“执行”,则Include之一似乎被忽略。我还没有看到关于忽略“包含蜂”的任何警告,所以我不知道这是否真的发生了,但是在ToListAsync()之后,我的对象的导航属性为空(它是一个列表)。

如果ToListAsync()之后的特定参数为null,则该列表也不为空(因此,“ Where”不会被逐步执行)。

我还注意到,在调试模式下,在有问题的Where()之后带有断点的情况下,如果对IQueryable设置快速监视并对其调用方法ToList(),则可以重现该问题。现在,在同一快速监视下,我调用方法First(),该对象具有正确填充其所有导航属性的对象。现在再次调用方法ToList()可以使列表的第一个对象完全填充,而其他对象则没有。

我希望我已经解释得足够好了,因为我不确定我是否有权发布一些代码。 (我会问,如果答案是肯定的,我会再来说明一下)。

在此先感谢那些花时间阅读的人。

0 个答案:

没有答案