Проблема с отображением фрагментов в 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