2010-09-23 2 views
3

ОК, у меня есть 3 таблицы, их называют:Entity Framework - добавить присоединиться только значениями внешних ключей

Person

  • PersonId
  • Имя

магазин

  • StoreID
  • Name

PersonStore

  • PersonId
  • StoreID

Теперь у меня есть форма, которая позволяет добавлять магазины к человеку. Тем не менее, я возвращаю идентификатор магазина из формы. Я действительно не хочу делать запрос, чтобы получить объект store из Entity Framework. Я просто хочу добавить в таблицу, используя объекты StoreID и Person, которые у меня есть.

ответ

5

По умолчанию в EF это соединение таблица не будет отображаться как единое целое, а не вы получите многие ко многим отношений, которые будут отображаться в виде двух навигационных свойств

т.е.

Person.Stores 
Store.People 

Если вы хотите построить много-много отношений без извлечения сущностей, а затем привязать объекты-заглушки - лучший способ.

var person = // you already have the person 
var store = new Store{StoreID = 5} // you know the storeID 

ctx.AttachTo("Stores", store); 
ctx.AttachTo("People", person); // assuming the person isn't already attached 
person.Stores.Add(store); 
ctx.SaveChanges(); 

Единственная проблема с этим кодом он потерпит неудачу, если отношения уже существует, так что вы должны быть уверены, что вы создаете новых отношения

Для дополнительной информации об использовании Сто объектов, как этот чек out my post. Надеюсь, это поможет.

Alex

Редактировать от OP:

Поскольку я использую EF4, я использовал следующий код, чтобы удалить строку из прикрепления (благодаря кончиков 13 из ссылки).

var person = // you already have the person 
var store = new Store{StoreID = 5} // you know the storeID 

ctx.Stores.Attach(store); 
person.Stores.Add(store); 
ctx.SaveChanges(); 
+0

Вы спасаете жизнь! Прикрепить и соответствующий Удалить; блестящий! –

+0

это замечательно. Спасибо, что поделился!! –

Смежные вопросы