По какой причине LINQ to SQL не создает коллекцию на основе отношений? - PullRequest
1 голос
/ 09 сентября 2008

У меня есть отношения между двумя объектами (e1 и e2), и e1 имеет коллекцию e2, однако у меня есть аналогичные отношения, установленные между (e2 и e3), но e2 не содержит коллекцию e3, по любой причине почему это произойдет? Что-нибудь, что я могу опубликовать, чтобы это было легче понять?

Редактировать: Я только что заметил, что отношения между e1 и e2 сплошные и между e2 и e3 пунктирные, что вызывает это? Это связано?

Ответы [ 2 ]

2 голосов
/ 06 октября 2008

С помощью этой настройки все работало.

1) LINQ to SQL Query, 2) Таблицы БД, 3) LINQ to SQL Модель данных в VS.NET 2008

1 - LINQ to SQL Query

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

альтернативный текст http://i478.photobucket.com/albums/rr148/KyleLanser/ThreeLevelHierarchy.png

0 голосов
/ 09 сентября 2008

FK_Contraints настроены так:

ALTER TABLE [dbo]. [E2] с проверкой и ограничением [FK_e2_e1] FOREIGN KEY ([E1Id]) Ссылки [dbo]. [E1] ([Id])

ALTER TABLE [dbo]. [E3] с проверкой и ограничением [FK_e3_e2] FOREIGN KEY ([E2Id]) Ссылки [dbo]. [E2] ([Id])

это то, что вы просили?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...