Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EntityFramework包含类型_C#_Entity Framework_Linq To Sql - Fatal编程技术网

C# 使用EntityFramework包含类型

C# 使用EntityFramework包含类型,c#,entity-framework,linq-to-sql,C#,Entity Framework,Linq To Sql,在我的查询中,我需要包括一个实体列表(以避免延迟加载) query.Include(x => x.ActionValues.Select(a => a.ActionValueDetails)); 这项工作没有任何问题,但在某些情况下,我需要另一个渴望加载的ActionValueDetail属性。ActionValueDetail是许多其他it实现的基类。对于这些情况,我的代码如下所示: query.Include(t => t.ActionValues.Select(a =&

在我的查询中,我需要包括一个实体列表(以避免延迟加载)

query.Include(x => x.ActionValues.Select(a => a.ActionValueDetails));
这项工作没有任何问题,但在某些情况下,我需要另一个渴望加载的ActionValueDetail属性。ActionValueDetail是许多其他it实现的基类。对于这些情况,我的代码如下所示:

query.Include(t => t.ActionValues.Select(a => a.ActionValueDetails.OfType<ActionValueDetailSpecial>().Select(d => d.SpecialDetail)));
query.Include(t=>t.ActionValues.Select(a=>a.ActionValueDetails.OfType().Select(d=>d.SpecialDetail));
但这总是抛出一个例外

包含路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,选择运算符作为集合导航属性

我不知道如何解决这个问题。 在这种情况下,使用延迟加载或投影不是我的选择。对于非常大的导出,我们需要这样做,以确保在写入流之前加载所有数据


任何帮助都会很好

您不能有条件地加载内容。你要么得到全部,要么一个也得不到。也许您以后可以在select中筛选结果?我不想筛选“ActionValueDetails”。一些ActionValueDetail实现有一些进一步的相关实体。在某些情况下,我需要加载这些相关的实体。但我认为我必须使用另一种策略来实现这一点。但是谢谢。无论如何:)
的类型是过滤;-)是的,好吧,你说得对!:)Sorry我认为您可以通过对两个单独的查询进行.Union()来解决这个问题,一个是加载所有对象(即您已经拥有的对象),另一个是显式包含ActionValueDetailSpecial和realted属性的查询。