我有3张桌子
Inventarios -> Localizacoes -> Etiquetas
从左到右都有一对多的关系
问题是我似乎无法到达Etiquetas
// GET: api/Inventarios
public IQueryable<Inventario> GetInventarios()
{
var inventarios = db.Inventarios.Include(i => i.Localizacoes.Select(l =>
l.Etiquetas.SelectMany(e => e.Numero)));
return inventarios;
}
这是模型
public class Inventario
{
public int InventarioID { get; set; }
public string Colaborador { get; set; }
public string Armazem { get; set; }
public decimal Total { get; set; }
public DateTime Data { get; set; }
public ICollection<Localizacao> Localizacoes { get; set; }
}
public class Localizacao
{
public int LocalizacaoID { get; set; }
public string Referencia { get; set; }
public int EtiquetasPorInventariar { get; set; }
public int EtiquetasInventariadas { get; set; }
public bool IsValid { get; set; }
public decimal Precisao { get; set; }
public int InventarioID { get; set; }
public Inventario Inventario { get; set; }
public ICollection<Etiqueta> Etiquetas{ get; set; }
}
public class Etiqueta
{
public int EtiquetaID { get; set; }
public string Numero { get; set; }
public int LocalizacaoID { get; set; }
public Localizacao Localizacao { get; set; }
}
这是我从api请求在浏览器控制台上获得的异常
“包含路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和用于集合导航的Select运算符 属性。”
答案 0 :(得分:1)
我的假设是您正在使用IQueryable
来提供 OData 支持
此外,我在这里看到的2件东西看起来不太正确
第一个是SelectMany
,它应该是Select
var inventarios = db.Inventarios.Include(i => i.Localizacoes.Select(l =>
l.Etiquetas.Select(e => e.Numero)));
第二,是您要返回IQueryable
,我不确定这是否会遍历对象图。
作为测试,您可以执行以下操作
return inventarios.ToList().AsQuerable();