2008-09-08 7 views
1

私は2つのエンティティ(E1とE2)との関係を持っており、E1はE2のコレクションを持っている、しかし、私は(E2及びE3)との間で設定同様の関係を持って、まだE2はE3年代のコレクション、なぜいかなる理由が含まれていませんこれは起こるだろうか?これを簡単に理解するために投稿できるものは何ですか?LINQ to SQLがリレーションシップに基づいてコレクションを生成しない理由は何ですか?

編集:私はちょうどE1とE2との間の関係はそれを引き起こすもの、点在して固体とe2とe3の間にあることに気づきましたか?それは関連していますか? 。

+0

は、あなたはそれが働いて手に入れた、またはあなたはまだ問題を抱えていますか? – KyleLanser

答えて

0

FK_Contraintsは、このように設定されている:。

ALTER TABLE [DBO] [E2]のチェックADD制約に[FK_e2_e1] FOREIGN KEY([E1Id])REFERENCES [DBO] [E1]([ID ])

ALTER TABLE [DBO]。[E3]のチェックADD制約に[FK_e3_e2] FOREIGN KEY([E2Id])REFERENCES [DBO]。[E2]([ID])

が何本あります頼んでいた?この設定を使用して

2

、すべてが働きました。 VS.NET 2008年

1)SQLクエリにLINQ、2)DBテーブル、3)LINQ SQLデータモデルには、

1 - LINQ SQLクエリに

DataClasses1DataContext db = new DataClasses1DataContext(); 

var results = from threes in db.tableThrees 
    join twos in db.tableTwos on threes.fk_tableTwo equals twos.id 
    join ones in db.tableOnes on twos.fk_tableOne equals ones.id 
    select new { ones, twos, threes }; 

2 - データベーススクリプト

--Table One 
CREATE TABLE tableOne(
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [value] [nvarchar](50) NULL, 
CONSTRAINT [PK_tableOne] PRIMARY KEY CLUSTERED 
    ([id] ASC) WITH ( 
    PAD_INDEX = OFF, 
    STATISTICS_NORECOMPUTE = OFF, 
    IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, 
    ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY]; 

--Table Two 
CREATE TABLE tableTwo(
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [value] [nvarchar](50) NULL, 
    [fk_tableOne] [int] NOT NULL, 
CONSTRAINT [PK_tableTwo] PRIMARY KEY CLUSTERED 
    ([id] ASC) WITH (
    PAD_INDEX = OFF, 
    STATISTICS_NORECOMPUTE = OFF, 
    IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, 
    ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY]; 

ALTER TABLE tableTwo WITH CHECK  
    ADD CONSTRAINT [FK_tableTwo_tableOne] 
    FOREIGN KEY([fk_tableOne]) 
    REFERENCES tableOne ([id]); 

ALTER TABLE tableTwo CHECK CONSTRAINT [FK_tableTwo_tableOne]; 


--Table Three 
CREATE TABLE tableThree(
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [value] [nvarchar](50) NULL, 
    [fk_tableTwo] [int] NOT NULL, 
CONSTRAINT [PK_tableThree] PRIMARY KEY CLUSTERED 
    ([id] ASC) WITH (
    PAD_INDEX = OFF, 
    STATISTICS_NORECOMPUTE = OFF, 
    IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, 
    ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
    ) ON [PRIMARY]; 

ALTER TABLE tableThree WITH CHECK 
    ADD CONSTRAINT [FK_tableThree_tableTwo] 
    FOREIGN KEY([fk_tableTwo]) 
    REFERENCES tableTwo ([id]); 

ALTER TABLE tableThree CHECK CONSTRAINT [FK_tableThree_tableTwo]; 

3 - Visual StudioでSQLデータモデルへのLINQ

alt text http://i478.photobucket.com/albums/rr148/KyleLanser/ThreeLevelHierarchy.png

関連する問題