【发布时间】:2018-01-16 08:39:55
【问题描述】:
如何在 Entity Framework Core 2.0.1 查询中包含另一个列表中的内部列表?
这是我尝试但没有成功的方法:
clase = repClase.ListQueryable(
//Specification
new ApplicationCore.Specifications.ClaseFilterByIdAndIdArticuloWithIncludesSpecification(idClase, idArticuloParam)
)
.Include(c => c.ReferenciasConstructor)
.ThenInclude(rc => rc.Select(rc1 => rc1.ReferenciaFabricanteTieneReferenciaConstructor))
.FirstOrDefault();
以及它抛出的错误: "属性表达式 'rc => {from ReferenciaConstructor rc1 in rc select [rc1].ReferenciaFabricanteTieneReferenciaConstructor}' 无效。该表达式应表示属性访问:'t => t.MyProperty'。 ”。
类:
[Table("Clases", Schema = "public")]
public class Clase
{
...
[InverseProperty("Clase")]
public IList<ReferenciaConstructor> ReferenciasConstructor { get; set; }
}
[Table("ReferenciasConstructor", Schema = "public")]
public class ReferenciaConstructor
{
[Key]
public int Id { get; set; }
...
//JOIN TABLE
[InverseProperty("ReferenciaConstructor")]
public IList<ReferenciaFabricanteTieneReferenciaConstructor> ReferenciaFabricanteTieneReferenciaConstructor { get; set; }
}
//JOIN TABLE
[Table("ReferenciaFabricanteTieneReferenciaConstructor", Schema = "public")]
public class ReferenciaFabricanteTieneReferenciaConstructor {
[Key]
public int IdReferenciaFabricante { get; set; }
[ForeignKey("IdReferenciaFabricante")]
public ReferenciaFabricante ReferenciaFabricante { get; set; }
[Key]
public int IdReferenciaConstructor { get; set; }
[ForeignKey("IdReferenciaConstructor")]
public ReferenciaConstructor ReferenciaConstructor { get; set; }
}
【问题讨论】:
-
如错误所述,
Include(expression)中的expression不能是任意表达式。请改用Select。 -
.ThenInclude(rc => rc.ReferenciaFabricanteTieneReferenciaConstructor)- 查看重复的问题为什么。