Проблема кардинальности структуры сущностей в Ассоциации 0 ... 1


У меня есть таблицы базы данных, которые выглядят следующим образом:

Схема Схемы

A Task может быть отображен на A Module, или не отображен вообще (0...1). Я использую Entity Framework database-first, и когда я сгенерировал модель из базы данных, сущность задачи пришла с модулями в виде коллекции (0 или более). Поэтому я открыл свой EDMX и изменил навигационное свойство "модули" на Task на 0...1.

Edmx в

Теперь, когда я пытаюсь скомпилировать, я получаю эту ошибку:

Ошибка 3003: проблема в отображении фрагментов, начиная со строки 1241: учитывая мощность ассоциативного конечного члена задачи, он должен быть сопоставлен с ключевыми столбцами таблицы TaskModule. Либо исправьте отображение, либо измените кратность этого конца.

Я не понимаю, что мне нужно сделать, чтобы исправить это. Я посмотрел на детали ассоциации и не вижу проблемы. Я знаю, что, возможно, пропустил что-то глупое, но я полностью застрял. Ассоциация свойства:

Ассоциация TaskModule

Visual Studio 2010 SP1, Entity Framework 4.3.1.0, SQL Server 2008 R2.

2 5

2 ответа:

Один из способов сделать это, чтобы переопределить первичный ключ для таблицы TaskModule. Вместо первичного ключа (Идентификатор_задачи, модуль) он должен быть просто (Идентификатор_задачи). Затем выполните обновление модели из базы данных и измените вручную любые ассоциации, которые не были получены из этого обновления.

Ну, ваша схема базы данных не соответствует описанию, которое вы даете:

Таблица TaskModule подразумевает отношение "многие ко многим", а не "многие к одному".

В edmx таблицы отношений "многие ко многим" не отображаются, но они все еще существуют в базе данных.

Так что вы должны исправить свою базу данных, или быть довольны отношением, предложенным EF !