Ошибка 3007. Проблема при сопоставлении фрагментов, начинающихся со строк 186, 205. Столбцы, не относящиеся к первичному ключу [WheelID], сопоставляются в обоих фрагментах с различными концептуальными свойствами сторон - возможно несоответствие данных, поскольку соответствующие концептуальные свойства сторон могут независимо изменены.
Я нашел несколько мест в Интернете, описывающих эту ошибку, но я просто не понимаю их. (смутный смайлик идет сюда)
Здесь есть что-то довольно фундаментальное, я, должно быть, скучаю. Можете ли вы объяснить это, чтобы я понял это? Может быть, используя мой пример из реальной жизни ниже?
альтернативный текст http://i39.tinypic.com/2hppnoo.jpg
Внешний ключ 1: N Wheels.Id -> Slices.WheelId
Я добавляю их в каркас сущности, а WheelId не виден в сущности Slices.
альтернативный текст http://i43.tinypic.com/287hq87.jpg
Делая обходной путь (удаляя связь из базы данных перед добавлением таблиц в EF - затем создавая ее заново и обновляя EF), мне удалось заставить WheelId оставаться в слайсах, но затем я получил ошибку, упомянутую вверху.
Так как Slices.WheelId является FK, вы не можете представить его в своей клиентской модели, точка. Однако есть способы получить ценность.
var wheelId = someSlice.Wheels.ID;
Обновление В EF 4 вы можете сделать это, используя FK Ассоциации вместо независимых ассоциаций.
Попробуйте удалить столбец сторонних свойств из набора сущностей, используя дизайн модели сущностей, это решит вашу проблему
Например
У нас есть две таблицы: одна - клиент, а другая - заказ. Используя дизайн модели объекта, мы добавили связь между клиентами и заказами, когда будем делать эту структуру объекта Ado.net. Я добавлю свойства навигации в обе приведенные ниже таблицы.
Like Customer.Orders - здесь заказ - это список Order.Customer
Один - Многие отношения.
Поэтому нам нужно удалить свойство с именем CustomerId [столбец внешнего ключа] из набора сущностей Order .
Для справки: