Проблема сопоставления фрагментов в Entity Framework

Я использую entity framework, и я столкнулся с нечетной ошибкой сборки.

Я строю форум и я создал таблицу в базе данных для "игнорирует", когда люди не любят друг друга, они будут игнорировать кого-то. Таблица имеет два столбца, и вместе они являются первичными ключами.

PK InitiatingUser
PK IgnoredUser

когда EF отображает эту таблицу, я получаю эту ошибку:

Ошибка 7 Ошибка 3034: проблема в отображении фрагментов, начиная с строк 1467, 1477: два объекта с возможно разными ключи сопоставляются с той же строкой. Убедитесь, что эти два фрагмента сопоставления сопоставляют оба конца набора ассоциаций с соответствующими столбцами.

Я открыл edmx в Редакторе xml и перешел к оскорбительным строкам.

          <MappingFragment StoreEntitySet="Ignores">
            <ScalarProperty Name="IgnoredUser" ColumnName="IgnoredUser" />
            <ScalarProperty Name="InitiatingUser" ColumnName="InitiatingUser" />
          </MappingFragment>

Я только начинаю работу с EF, и я не понимаю, что происходит или в чем может быть проблема.

любая помощь приветствуется.

редактировать Отношения между игнорирует используется для внешних ключей сопоставление инициирующего пользователя и игнорируемого пользователя с первичным ключом (именем пользователя) таблицы users. Так было, когда я впервые сопоставил EF с этой таблицей. С тех пор я удалил FKs, чтобы узнать, поможет ли это, но это не помогло.

2 ответов


Это, вероятно, связано с включением таблицы соединений "многие ко многим" в вашу модель сущности или с тем, что EF считает такой таблицей (возможно, такой, которая не имеет собственного автономного ключа, но чья идентичность состоит из двух или более внешних ключей).

Итак, например, предположим, у вас есть следующие таблицы:

  • человек
  • адрес
  • PersonAddress (содержит только PersonID и AddressID)

в вашей сущности модель, вы должны только добавить человека и адрес. Если добавить PersonAddress, то EF выдаст ошибку. Согласно это MSDN Q & A, EF автоматически примет во внимание таблицу join.


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

Если у кого-то есть понимание, дайте мне знать. Я лучше приму чей-то ответ.