我有两个实体(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