Это может быть связано с моим другим вопросом - похоже, что:
-
Entity Framework - ужасный коррелятор реляционной алгебры 1 или;
-
(на что я надеюсь) Я пропускаю что-то с SSDL/CSDL и EDMX-моделью или EF-сопоставлениями вообще.
У меня есть первая схема схемы, и схема выглядит следующим образом:
ExternalMaps
---
emap_id - PK
Melds
---
meld_id - PK
emap_id - >>UNIQUE INDEX<< over not-null column, FK to ExternalMaps.emap_id
Для проверки эти сценарии написаны следующим образом, что должно привести к множественности ExternalMaps:1 <-> 0..1:Melds
2.
ALTER TABLE [dbo].[Melds] WITH CHECK ADD CONSTRAINT [FK_Melds_ExternalMaps]
FOREIGN KEY([emap_id]) REFERENCES [dbo].[ExternalMaps] ([emap_id])
CREATE UNIQUE NONCLUSTERED INDEX [IX_Melds] ON [dbo].[Melds] ([emap_id] ASC)
Однако, когда я использую конструктор EDMX для обновления из базы данных (SQL Server 2012), с нуля, он неправильно создает отношение Association/Foreign Key как ExternalMap:1 <-> M:Meld
.
Когда я пытаюсь изменить множественность вручную для Meld (с помощью свойств "Set Set" в дизайнере) с помощью 1
или 0..1
, я получаю:
Запуск преобразования: множественность недействительна в роли "Meld" в отношении "FK_Melds_ExternalMaps". Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница множественности зависимой роли должна быть
*
.
(Как и в случае с моим другим вопросом, это, по-видимому, связано с уникальными ограничениями, которые не были правильно зарегистрированы/соблюдены как Ключи Кандидатов.)
Как я могу получить EF для оценки множественности 1 <-> 0..1/1
, установленной моделью?
1 Хотя я надеюсь, что это не так, я не хочу печалиться, пытаясь заставить EF отобразить на вполне допустимую модель RA: LINQ to SQL (L2S) не имеет Эта проблема. Поскольку мой другой вопрос не был тривиально дан для такого популярного ОРМ, я теряю веру в этот инструмент.
2 По идее, что FK не является другим: "Хотя у него не должно быть ничтожных внешних ключей". - Также не так, что это "общий" ПК, поскольку этот ответ от 2009 предлагает как исправление.
Я использую EF 6.1.1, VS 2013 Ultimate и не собираюсь использовать какие-либо "функции подтипа OO" - если это что-то меняет.
ИЗМЕНИТЬ вздох:
Множественность недействительна, поскольку свойства зависимой роли не являются ключевыми свойствами? (с 2011 г.) - это все еще имеет место для EF "Microsoft-одобренный Enterprise-ready" ORM в 2014 2015?
При такой скорости в следующий раз, когда кто-то спросит, почему EF не был использован, у меня будет большой набор причин, кроме "LINQ to SQL работает просто отлично".