Entity Framework 4.0: ошибка 113: множественность недопустима в роли


Я поставил новую таблицу в моей базе данных, и есть 4 таблицы, которые имеют внешний ключ отношения с ним. Я думал, что настроил все 4 таким же образом, но я получаю эту ошибку;

ошибка 15 ошибка 113: множественность недопустима в роли ' ReportCellImage 'в отношении'FK_OtherLeaves_ReportCellImages'. Поскольку все свойства в зависимой роли могут быть обнулены, кратность главной роли должна быть ' 0..1'.

Итак, чтобы упростить мой таблицы;

таблица ReportCellImage содержит ReportCellImageId поле, которое в первичном ключе и целое число

таблица OtherLeave содержит Поле ReportCellImageId в качестве внешнего ключа значение null и значение по умолчанию 4

другие таблицы похожи и все имеют внешний ключ, настроенный для соединения с таблицей ReportCellImage

это недавнее изменение, поэтому, когда я обновляю свой файл edmx из базы данных, почему я получаю эту ошибку и как ее исправить это?

8 56

8 ответов:

Если ваш FK обнуляется, ваша кратность в основном объекте должна быть 0..1 - значение по умолчанию не имеет никакой роли в этом, потому что вы можете назначить null для FK. Таким образом, все ваши зависимые сущности должны быть в 0..1 - * связь с вашей основной сущностью.

У меня было одно и то же сообщение, и это было озадачивающе, потому что таблицы, которые я изменил в БД, отличались от тех, для которых я получал сообщение.

Я попытался изменить кратность 0..1-ко-многим, но сообщение сохранялось, даже после команд "выполнить пользовательский инструмент", очищает и перестраивает.

решено путем удаления отношения EF жаловался и обновления модели из DB

щелкните правой кнопкой мыши на связи в диаграмме EDX. В собственности, изменить КОНЕЦ1 кратности к 0..1 (ноль или один из YOURTABLENAME)

Я удалил обновленную таблицу из модели, а затем в Update Model из базы данных, добавил ее снова, и это помогло.

Я использую базу данных первый подход для создания .файл edmx. Когда я столкнулся с этой проблемой, я попробовал несколько предложений выше, но все еще получал ошибки, поэтому я удалил .edmx-файл и обновил весь файл из обновленной базы данных.

Я обнаружил, что иногда EF запутывается после обновления существующей базы данных, и хотя идеально найти первопричину, потратить час на что-то может быть невозможно в рабочей среде (например, мой)

наша БД новая и маленькая, поэтому обновление файла легко и не займет много времени.
Проблема ушла, двигаясь дальше . . .

У меня была та же проблема после добавления новой таблицы, я попробовал все решения здесь, включая удаление отношений, но это не сработало. Решение, которое сработало для меня, состояло в том, чтобы полностью удалить модель и создать новую модель. Не забудьте удалить строку подключения в web.сконфигурируйте так, чтобы ваш новый EF мог использовать то же имя.

после удаления ссылки на сущность в классах сущностей, а затем удаления ссылки вручную в базе данных, а затем положить их обратно шаг за шагом, чтобы решить проблему я понял, после того, как я закончил быстрое решение было бы заменить WithOptional с WithRequired в контексте после того, как я впервые изменил поле с nullable на nullable.

protected override void OnModelCreating(DbModelBuilder modelBuilder)

изменить кратность= "1"на кратность=" 0..1"

 <Association Name="FK_O_Personel_PBS_AtanmaSekilleri">
          <End Type="eKampus_RTEUModel.PBS_AtanmaSekilleri" Role="PBS_AtanmaSekilleri" Multiplicity="0..1" />
          <End Type="eKampus_RTEUModel.O_Personel" Role="O_Personel" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="PBS_AtanmaSekilleri">
              <PropertyRef Name="ID" />
            </Principal>
            <Dependent Role="O_Personel">
              <PropertyRef Name="atamaSekliID" />
            </Dependent>
          </ReferentialConstraint>
        </Association>