Entity Framework 4.0: ошибка 113: множественность недопустима в роли
Я поставил новую таблицу в моей базе данных, и есть 4 таблицы, которые имеют внешний ключ отношения с ним. Я думал, что настроил все 4 таким же образом, но я получаю эту ошибку;
ошибка 15 ошибка 113: множественность недопустима в роли ' ReportCellImage 'в отношении'FK_OtherLeaves_ReportCellImages'. Поскольку все свойства в зависимой роли могут быть обнулены, кратность главной роли должна быть ' 0..1'.
Итак, чтобы упростить мой таблицы;
таблица ReportCellImage содержит ReportCellImageId поле, которое в первичном ключе и целое число
таблица OtherLeave содержит Поле ReportCellImageId в качестве внешнего ключа значение null и значение по умолчанию 4
другие таблицы похожи и все имеют внешний ключ, настроенный для соединения с таблицей ReportCellImage
это недавнее изменение, поэтому, когда я обновляю свой файл edmx из базы данных, почему я получаю эту ошибку и как ее исправить это?
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>