Проблема с отображением фрагментов в Entity Framework
Я использую сущность framework, и я столкнулся с нечетной ошибкой сборки.
Я создаю форум, и я создал таблицу в базе данных для "игнорирования", когда люди не любят друг друга, они будут игнорировать кого-то. Таблица имеет два столбца, и вместе они являются первичными ключами.
PK InitiatingUser
PK IgnoredUser
Когда EF отображает эту таблицу, я получаю эту ошибку:
Ошибка 7 Ошибка 3034: Проблема с отображением фрагментов, начиная с строк 1467, 1477: Два объекта с разными ключами отображаются в одну и ту же строку. Убедитесь, что эти два фрагмента отображения отображают оба конца набора AssociationSet в соответствующие столбцы.
Я открыл edmx в редакторе xml и перешел на нарушающие строки.
<MappingFragment StoreEntitySet="Ignores">
<ScalarProperty Name="IgnoredUser" ColumnName="IgnoredUser" />
<ScalarProperty Name="InitiatingUser" ColumnName="InitiatingUser" />
</MappingFragment>
Я только начинаю с EF, и я не понимаю, что происходит или что может быть проблема.
Любая помощь приветствуется.
ИЗМЕНИТЬ
Взаимосвязи между игнорируемыми ключами, используемыми для того, чтобы иметь внешние ключи, отображающие как инициирующий пользователя, так и проигнорированный пользователь в первичный ключ (имя пользователя) таблицы пользователей. Так было, когда я впервые сопоставил EF с этой таблицей. С тех пор я удалил FK, чтобы узнать, поможет ли это, но это не так.
Ответы
Ответ 1
Я не знаю, что здесь не так, но я просто удалил таблицу из ORM и БД, а затем воссоздал ее с фактическим столбцом идентификатора вместо двух первичных ключей. Я повторно отобразил таблицу, скомпилировал ее, и теперь все хорошо. Было бы удобно делать это так, как я, но хорошо.
Если кто-нибудь знает, дайте мне знать. Я бы предпочел, чтобы кто-то ответил.
Ответ 2
Вероятно, это связано с включением таблицы соединения "много-ко-многим" в вашей модели сущности или того, что EF считает такой таблицей (возможно, такой, которая не имеет собственного автономного ключа, но чья личность состоит из двух или более внешних ключей).
Итак, скажем, у вас есть следующие таблицы:
- Person
- Адрес
- PersonAddress (содержит только PersonID и AddressID)
В вашей модели сущности вы должны добавлять только человека и адрес. Если вы добавите PersonAddress, тогда EF выведет ошибку. Согласно этот MSDN Q & A, EF автоматически учитывает таблицу соединений.
Ответ 3
ПК InitiatingUser; ПК IgnoredUser
два первичных ключа не могут позволить edmx file.so создать столбец sno в этой таблице и сделать его первичным ключом. удалить ПК из InitiatingUser и IgnoredUser. теперь в этих двух столбцах нет доступного первичного ключа.
лайк
Пк сно; FK InitiatingUser; ПК IgnoredUser