我有兩個實體(e1和e2)之間的關係,e1有e2的集合,但是我在(e2和e3)之間建立了類似的關係,但e2不包含e3的集合,任何原因這會發生?任何我可以發佈,以便更容易弄清楚?LINQ to SQL不會根據關係生成集合的原因是什麼?
編輯:我只是注意到,e1和e2之間的關係是固體的,e2和e3之間是虛線的,是什麼原因造成的?它有關係嗎?
我有兩個實體(e1和e2)之間的關係,e1有e2的集合,但是我在(e2和e3)之間建立了類似的關係,但e2不包含e3的集合,任何原因這會發生?任何我可以發佈,以便更容易弄清楚?LINQ to SQL不會根據關係生成集合的原因是什麼?
編輯:我只是注意到,e1和e2之間的關係是固體的,e2和e3之間是虛線的,是什麼原因造成的?它有關係嗎?
的FK_Contraints設置了這樣的:。
ALTER TABLE [DBO] [E2] WITH CHECK ADD CONSTRAINT [FK_e2_e1]外鍵([E1Id])參考文獻[DBO] [E1]([ID ])
ALTER TABLE [DBO]。[E3] WITH CHECK ADD CONSTRAINT [FK_e3_e2]外鍵([E2Id])參考文獻[DBO]。[E2]([ID])
這就是你請求?
使用此設置,一切正常。
1)LINQ到SQL查詢,2)表DB,3)LINQ到SQL數據模型在VS.NET 2008
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 - LINQ to SQL數據模型在Visual Studio
alt text http://i478.photobucket.com/albums/rr148/KyleLanser/ThreeLevelHierarchy.png
你得到它的工作,或者是你仍然有問題? – KyleLanser 2008-10-07 15:12:46