2010-09-23 83 views
3

OK,我有3個表,稱他們爲:實體框架 - 添加加入只有外鍵值

  • PERSONID
  • 名稱

商店

  • STOREID
  • 名稱

PersonStore

  • PERSONID
  • STOREID

現在,我有一個表格,讓你到商店添加到人。不過,我從表單中取回商店ID。我真的不想做一個查詢從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(); 

這段代碼的唯一的問題是,如果關係已經存在,所以你需要確保你正在創建一個關係

更多關於使用存根實體,如該檢查將失敗出my post。 希望這有助於。

亞歷

從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

你是一個生活金丹!附加和相應的刪除;輝煌! – 2012-11-09 03:39:12

+0

這很棒。感謝分享!! – 2017-04-06 22:22:14