framework c# entity-framework entity-framework-4 entity-framework-5 entity-framework-4.1

join entity framework c#



Entity Framework se une a 3 tablas (3)

Creo que será más fácil usar 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 la cláusula orderby , para asegurarse de que Top(10) devuelva los diez elementos principales correctos.

Intento unir tres tablas, pero no puedo entender el método ...

Completé unir 2 tablas

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


Esto no se ha probado, pero creo que la sintaxis debería funcionar para una consulta lambda. A medida que une más tablas con esta sintaxis, debe profundizar en los nuevos objetos para alcanzar los valores que desea 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);


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); Great answer