3
OK,我有3個表,稱他們爲:實體框架 - 添加加入只有外鍵值
人
- PERSONID
- 名稱
商店
- STOREID
- 名稱
PersonStore
- PERSONID
- STOREID
現在,我有一個表格,讓你到商店添加到人。不過,我從表單中取回商店ID。我真的不想做一個查詢從Entity Framework中獲取商店對象。我只想使用StoreID和Person對象添加到表中。
OK,我有3個表,稱他們爲:實體框架 - 添加加入只有外鍵值
人
商店
PersonStore
現在,我有一個表格,讓你到商店添加到人。不過,我從表單中取回商店ID。我真的不想做一個查詢從Entity Framework中獲取商店對象。我只想使用StoreID和Person對象添加到表中。
默認情況下,在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();
你是一個生活金丹!附加和相應的刪除;輝煌! – 2012-11-09 03:39:12
這很棒。感謝分享!! – 2017-04-06 22:22:14