1


0

2つのエンティティ(e1とe2)の間に関係があり、e1にe2のコレクションがありますが、(e2とe3)の間にも同様の関係がありますが、e2にはe3のコレクションは含まれません。起こる? これを理解しやすくするために投稿できるものはありますか。

編集:私はちょうどe1とe2の間の関係がしっかりしていて、e2とe3の間の点線が点在していることに気づいた、それが何を引き起こすのか? それは関係がありますか?

2 Answer


2


*この設定を使うと、すべてがうまくいった。

1)LINQ to SQLクエリ、2)DBテーブル、3)LINQ to SQLデータモデル、VS.NET 2008

  • 1 - LINQ to SQLクエリ*

DataClasses1DataContext db = new DataClasses1DataContext();

var results = db.tableThreesの3つのツリーからの結合threes.fk_tableTwoのdb.tableTwosの2つの結合に等しいtwos.idのdb.tableOnesに1の結合に等しい1.idに等しい新しい{ones、twos、threes}を選択してください。
  • 2 - データベーススクリプト*

 - テーブル1 CREATE TABLE tableOne([id] [int] IDENTITY(1,1)NOT NULL、[値] [nvarchar](50)NULL、CONSTRAINT [PK_tableOne]プライマリキークラスタ([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 2 CREATE TABLE tableTwo([id] [int] IDENTITY(1,1)NOT NULL、[値] [nvarchar](50)NULL、[fk_tableOne] [int] NOT NULL、CONSTRAINT [PK_tableTwo]プライマリキークラスタ([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];

CONTRAINTを使用したALTER TABLE tableTwo [FK_tableTwo_tableOne] FOREIGN KEY([fk_tableOne])関連情報tableOne([id]);

ALTER TABLE tableTwo CHECK CONSTRAINT [FK_tableTwo_tableOne];

--Table 3 CREATE TABLE tableThree([id] [int] IDENTITY(1,1)NOT NULL、[値] [nvarchar](50)NULL、[fk_tableTwo] [int] NOT NULL、CONSTRAINT [PK_tableThree]プライマリキークラスタ([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];

CONTRAINT [FK_tableThree_tableTwo] FOREIGN KEY([fk_tableTwo])参照テーブルtableTwo([id]);

ALTER TABLE tableThree CHECK CONSTRAINT [FK_tableThree_tableTwo];
  • 3 - Visual StudioのLINQ to SQLデータモデル*

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


0


FK_Contraintは次のように設定されています。

CHECK ADD CONSTRAINTを使用したALTER TABLE [dbo]。[e2]外部キー([E1Id])参照[dbo]。[e1]([Id])

ALTER TABLE [dbo]。[e3]追加チェック制約付き[FK_e3_e2]外部キー([E2Id])参照[dbo]。[e2]([Id])

これはあなたが求めていたものですか?