У меня есть таблицы баз данных, которые выглядят следующим образом:Entity Framework Cardinality Выпуск на 0 ... 1 Ассоциацию в
Task
может быть сопоставлен с Module
или не отображенные на всех (0. ..1). Сначала я использую базу данных Entity Framework, и когда я сгенерировал модель из базы данных, объект Task пришел с модулями в виде коллекции (0 или более). Поэтому я открыл свой EDMX и изменил свойство навигации «Модули» на «Задача» на 0 ... 1.
Теперь, когда я пытаюсь скомпилировать, я получаю эту ошибку:
Error 3003: Problem in mapping fragments starting at line 1241:Given the cardinality of Association End Member Task, it should be mapped to key columns of the table TaskModule. Either fix the mapping or change the multiplicity of this end.
Я не понимаю, что мне нужно сделать, чтобы исправить это. Я просмотрел детали ассоциации и не вижу проблемы. Я знаю, что, вероятно, мне не хватает чего-то глупого, но я полностью застрял. Свойства ассоциации:
Visual Studio 2010 SP1, Entity Framework 4.3.1.0, SQL Server 2008 R2.
Нет смысла иметь таблицу TaskModule. ModuleName должен быть обнуляемым внешним ключом в задаче –
@ Рафаэль Althaus Мне кажется, что это философский ответ (т.е. нарушает третий NF, но спорен ли вы должны или нет). Можете ли вы указать мне материал, который поддерживает ваш POV? Взгляните на http://stackoverflow.com/questions/1723808/nullable-foreign-key-bad-practice – Dean
Это отличный вопрос, который вы связали, Дин. Наверное, я в меньшинстве, может быть, я старая школа, но нейтральные внешние ключи действительно втирают меня в неправильный путь. Я изменил таблицу TaskModule, как вы предложили, и теперь все работает нормально. –