1

tbl_eventsすべてのイベント ( ) に関連するすべてのオブジェクト ( )を提示するクエリを作成したいと考えていますtbl_objects(関係タイプ — M:N)。

接続する 2 つのテーブルの外部キーのみを保持する接続テーブル (関連付けクラス) であるテーブルに問題があります。

たとえば、はtotbl_eventsという名前の接続テーブルに接続されています。tbl_object_has_tbl_eventstbl_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 の関係がある場合に、そのようなクエリをどのように実装できるかです。

ありがとう。

UPDATE多対多関係の生成:

-- -----------------------------------------------------
-- 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);
4

1 に答える 1

1

エンティティ データ モデルには、FK のみを含むテーブルは表示されません。したがって、あなたの場合、Events エンティティにはナビゲーション プロパティ Objects があり、Object エンティティにはナビゲーション プロパティ Events があります。

したがって、情報を取得するには、次のようなクエリを記述できます。

IList dataList = (from dEvent in App.glidusContext.tbl_events
                  from dObject in dEvent.Objects
                    select new { dEvent.eventName, dObject.objectName}).ToList();
于 2011-02-18T17:37:07.733 に答える