Проблема кардинальности структуры сущностей в Ассоциации 0 ... 1
У меня есть таблицы базы данных, которые выглядят следующим образом:
A Task
может быть отображен на A Module
, или не отображен вообще (0...1). Я использую Entity Framework database-first, и когда я сгенерировал модель из базы данных, сущность задачи пришла с модулями в виде коллекции (0 или более). Поэтому я открыл свой EDMX и изменил навигационное свойство "модули" на Task на 0...1.
Теперь, когда я пытаюсь скомпилировать, я получаю эту ошибку:
Я не понимаю, что мне нужно сделать, чтобы исправить это. Я посмотрел на детали ассоциации и не вижу проблемы. Я знаю, что, возможно, пропустил что-то глупое, но я полностью застрял. Ассоциация свойства:Ошибка 3003: проблема в отображении фрагментов, начиная со строки 1241: учитывая мощность ассоциативного конечного члена задачи, он должен быть сопоставлен с ключевыми столбцами таблицы TaskModule. Либо исправьте отображение, либо измените кратность этого конца.
Visual Studio 2010 SP1, Entity Framework 4.3.1.0, SQL Server 2008 R2.
2 ответа:
Один из способов сделать это, чтобы переопределить первичный ключ для таблицы TaskModule. Вместо первичного ключа (Идентификатор_задачи, модуль) он должен быть просто (Идентификатор_задачи). Затем выполните обновление модели из базы данных и измените вручную любые ассоциации, которые не были получены из этого обновления.
Ну, ваша схема базы данных не соответствует описанию, которое вы даете:
Таблица TaskModule подразумевает отношение "многие ко многим", а не "многие к одному".
В edmx таблицы отношений "многие ко многим" не отображаются, но они все еще существуют в базе данных.
Так что вы должны исправить свою базу данных, или быть довольны отношением, предложенным EF !