Проблема сопоставления фрагментов в 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 вместо двух первичных ключей. Я переписал таблицу, скомпилировал, и теперь все хорошо. Было бы удобно сделать это так, как я это сделал, но ладно.
Если у кого-то есть понимание, дайте мне знать. Я лучше приму чей-то ответ.