Entity Framework Объединение 3 Таблиц
Я пытаюсь объединить три таблицы, но я не могу понять метод...
Я завершил объединение 2 таблиц
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);

Я хотел бы включить tbl_Title стол TID PK и получить Title
3 ответов:
Я думаю, что это будет проще с помощью синтаксического запроса:
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);и вы, вероятно, следует добавить
orderbyпредложение, чтобы убедитьсяTop(10)возвращает правильную десятку элементов.
Это непроверено, но я считаю, что синтаксис должен работать для лямбда-запроса. По мере объединения большего количества таблиц с этим синтаксисом вы должны углубиться в новые объекты, чтобы достичь значений, которые вы хотите манипулировать.
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
Comments