Entity Framework une 3 tablas
Estoy intentando unir tres mesas pero no entiendo el método...
Completé unir 2 mesas
var entryPoint = dbContext.tbl_EntryPoint
.Join(dbContext.tbl_Entry,
c => c.EID,
cm => cm.EID,
(c, cm) => new
{
UID = cm.OwnerUID,
TID = cm.TID,
EID = c.EID,
}).
Where(a => a.UID == user.UID).Take(10);
Me gustaría incluir la tabla tbl_Title con TID PK y obtener el campo Título .
Muchas gracias
Aceptado
Creo que será más fácil utilizar consultas basadas en sintaxis:
var entryPoint = (from ep in dbContext.tbl_EntryPoint
join e in dbContext.tbl_Entry on ep.EID equals e.EID
join t in dbContext.tbl_Title on e.TID equals t.TID
where e.OwnerID == user.UID
select new {
UID = e.OwnerID,
TID = e.TID,
Title = t.Title,
EID = e.EID
}).Take(10);
Y probablemente debería agregar orderby
una cláusula para asegurarse de que Top(10)
las devoluciones sean correctas los diez elementos principales.
Esto no está probado, pero creo que la sintaxis debería funcionar para una consulta lambda. A medida que unes más tablas con esta sintaxis, tendrás que profundizar más en los nuevos objetos para alcanzar los valores que deseas manipular.
var fullEntries = dbContext.tbl_EntryPoint
.Join(
dbContext.tbl_Entry,
entryPoint => entryPoint.EID,
entry => entry.EID,
(entryPoint, entry) => new { entryPoint, entry }
)
.Join(
dbContext.tbl_Title,
combinedEntry => combinedEntry.entry.TID,
title => title.TID,
(combinedEntry, title) => new
{
UID = combinedEntry.entry.OwnerUID,
TID = combinedEntry.entry.TID,
EID = combinedEntry.entryPoint.EID,
Title = title.Title
}
)
.Where(fullEntry => fullEntry.UID == user.UID)
.Take(10);