我在C#中使用这些句子从表DetalleContenido和Archivo中检索数据:
var detallesContenido =
from contenido in guiaContext.Contenido
where contenido.PuntoInteres.id_punto == puntoInteresID
from dc in contenido.DetalleContenido
where dc.Idioma.ds_idioma == idiomaCliente
select dc;
表之间的关系是这样的:
我使用puntoInteresID和idiomaCliente来检索来自DetalleContenido和Archivo的所有行,这些行是PuntoInteres的一部分但是这句话Archivo总是空的!
sql sentece等价是:
Select dc.ds_nomDetContenido, dc.ds_descDetContenido, ar.archivo
from Contenido c, DetalleContenido dc, Archivo ar, Idioma i
where c.id_punto = puntoInteresID
and c.id_contenido = dc.id_contenido
and dc.id_idioma = i.id_idioma
and i.ds_idioma = idiomaCliente
and dc.id_archivo = ar.id_archivo;
我怎样才能检索Archivo?
谢谢!
你也可以
.Load()
在所选对象的“引用”属性上(当您使用它们时)。
但至于你的查询,似乎你的Archivo表是1到多,你不能“包含”或“加载”该方面的“多”方面。你会不得不做一个“选择dc.Archivo”我想。
你尝试过使用Include()语句吗?我认为它看起来像这样
var detallesContenido =
from contenido in guiaContext.Contenido.Include("DetalleContenido")
where contenido.PuntoInteres.id_punto == puntoInteresID
from dc in contenido.DetalleContenido
where dc.Idioma.ds_idioma == idiomaCliente
select dc;
怎么样:
var detallesContenido =
from contenido in guiaContext.Contenido
where contenido.PuntoInteres.id_punto == puntoInteresID && contenido.DetalleContenido.Any(c=>c.Idioma.ds_idioma == idiomaCliente)
select contenido.DetalleContenido;
我的解决方案
var detallesContenido =
from contenido in guiaContext.Contenido
where contenido.PuntoInteres.id_punto == puntoInteresID
from detalleContenido in contenido.DetalleContenido
where detalleContenido.Idioma.ds_idioma == idiomaCliente
select new { detalleContenido, detalleContenido.Archivo };
谢谢!