Почему EF 4 не создает ассоциацию для отношения FK со столбцом с уникальным индексом?

Я столкнулся со сценарием, в котором Entity Framework 4.0 не генерирует связь с сущностью, поддерживаемой таблицей, имеющей уникальный индекс , и мне интересно почему.

Основная настройка такова: допустим, у меня есть две таблицы в SQL Server 2008 R2 и отношение внешнего ключа:

CREATE TABLE [dbo].[User](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [GroupId] [int] NULL,
 CONSTRAINT [PK_User] 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]

CREATE TABLE [dbo].[Group](
[Id] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_Group] 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 [dbo].[User]  WITH CHECK ADD  CONSTRAINT [FK_User_Group] 
    FOREIGN KEY([GroupId])
REFERENCES [dbo].[Group] ([Id])

Кроме того, предположим, что присутствует следующий индекс:

CREATE NONCLUSTERED INDEX [IX_Group] ON [dbo].[Group] 
(
[Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

Если я сообщу конструктору в Visual Studio 2010 для создания модели данных объекта ADO.NET Я получаю модель с двумя классами, Пользователь и Группа , Пользователь , имеющий свойство навигации, называемое Группа . Это все хорошо.

Теперь, скажем, вместо этого индекс выглядел так:

CREATE UNIQUE NONCLUSTERED INDEX [IX_Group] ON [dbo].[Group] 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

То есть, единственное, что я сделал , , сделал индекс уникальным. После этого, когда я говорю разработчику Visual Studio сгенерировать Entity Model, связь между пользователями и группами не отображается, и у пользователя нет свойств навигации. Изучение сгенерированного файла EDMX показывает, что в модели хранилища вообще отсутствует AssociationSet.

Кто-нибудь может объяснить, почему это так? Почему уникальный индекс не позволяет EF моделировать отношения?

Спасибо.

9
задан Rune 18 August 2010 в 10:29
поделиться

1 ответ

Уникальный индекс допускает 1 значение NULL, первичный ключ не допускает NULLS . Как вы будете соответствовать NULL, если ничто не равно NULL, ни даже другое NULL

12
ответ дан 4 December 2019 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: