Я хочу написать запрос, который представляет для каждого события (tbl_events
) все объекты (tbl_objects
), связанные с ним (тип отношения - M: N).
У меня проблема с таблицами, которые являются таблицами соединений (класс ассоциации), который содержит только внешние ключи двух таблиц, которые соединяются.
Например, tbl_events
связан с таблицей соединений с именами от tbl_object_has_tbl_events
до tbl_objects
.
Вот структура связанных таблиц:
tbl events has: eventID, eventName
tbl_object has: objectID, objectName
tbl_object_has_tbl_events: eventID, objectID
Вот что я пытался написать:
IList dataList = (from dEvent in App.glidusContext.tbl_events.
join dObject in App.glidusContext.tbl_objects
on dEvent.tbl_objects equals dObject.objectID
select new { dEvent.eventName, dObject.objectName}).ToList();
Я не могу добраться до таблицы соединений tbl_object_has_tbl_events
У меня вопрос, как я могу реализовать такой запрос, когда у меня есть отношение M: N.
Спасибо.
ОБНОВЛЕНИЕ Генерация отношения «многие ко многим»:
-- -----------------------------------------------------
-- Table tbl_events
-- -----------------------------------------------------
CREATE TABLE tbl_events (
eventID INT NOT NULL IDENTITY,
eventName NVARCHAR(100) NOT NULL,
PRIMARY KEY (eventID));
-- -----------------------------------------------------
-- Table tbl_objects
-- -----------------------------------------------------
CREATE TABLE tbl_objects (
objectID INT NOT NULL IDENTITY,
objectName NVARCHAR(100) NOT NULL,
PRIMARY KEY (objectID));
-- -----------------------------------------------------
-- Table tbl_objects_has_tbl_events
-- -----------------------------------------------------
CREATE TABLE tbl_objects_has_tbl_events (
objectID INT NOT NULL,
eventID INT NOT NULL,
PRIMARY KEY (objectID, eventID),
CONSTRAINT fk_tbl_objects_has_tbl_events_tbl_objects
FOREIGN KEY (objectID)
REFERENCES tbl_objects (objectID)
ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT fk_tbl_objects_has_tbl_events_tbl_events
FOREIGN KEY (eventID)
REFERENCES tbl_events (eventID)
ON DELETE CASCADE ON UPDATE CASCADE);