В типичном случае «многие ко многим», когда таблица объединения имеет только составной ключ (два поля первичного ключа), Entity Framework добавит свойства навигации непосредственно в связанные объекты. Однако, когда в соединительной таблице есть дополнительные поля, Entity Framework создает сущность для объединяемой таблицы, чтобы вы могли «получить» дополнительную информацию.
В случае, который вы описали выше, Entity Framework сгенерирует Entity для вашей таблицы "join", которая будет иметь ассоциации со всеми 3 вашими объектами.
Я создал пример, используя сущности Item1, Item2, Item3 и Link.
С точки зрения базы данных, если у меня есть идентификатор Item1, я могу запросить таблицу с чем-то вроде:
select Item1ID, Item2ID, Item3ID from Link where Item1ID = 1
Это даст мне список «пар» Item2, Item3, связанных с Item1 # 1. Используя Linq to Entities, я могу запросить модель EF аналогично, выполнив:
var q =
from link in context.Link
where link.Item1ID == 1
select new { link.Item1, link.Item2, link.Item3 };
Или, если у меня уже есть объект Item1, для которого я хочу получить отношения:
item1.Link.Select(l => new { l.Item1, l.Item2, l.Item3 });
Это только основные примеры, но вы можете легко использовать методы расширения LINQ и IQueryable для преобразования / группировки данных по своему вкусу.
Если вы можете предоставить более подробную информацию о вашем деле, я мог бы привести вам более конкретные примеры. Надеюсь, это поможет!
Тим