0

我有兩個表,第一個表有一個主鍵,但它不是自動遞增,另一個具有主鍵並且也是自動遞增的。我需要將第二個主鍵的值設置爲第一個。在燈開關中創建零關係或一對一關係的主鍵

TABLE1 primary key   TABLE2 primary key 
zero or one ------------ one 

我有這種關係,當我向TABLE1插入一條新記錄時,TABLE2主鍵未插入TABLE1主鍵。值爲0.我該如何解決這個問題?

在此先感謝。

+0

這依賴於關聯映射。你能展示細節嗎? BTW組合鍵是由同一個表中的多個列組成的鍵:) – 2013-02-14 13:18:42

回答

0

它不會被自動設置,你就必須將記錄添加到表2,&設置基準以它自己,在表1插入方法。

僅僅因爲你要麼他們之間的定義並不意味着表2記錄會自動被添加的關係,也不是表1 FK。

還是我誤解了你在問什麼?

編輯:

partial void PERSONELs_Inserting(PERSONEL entity) 
{ 
    entity.refPersonelID = entity.Personelyetki.Id; 
} 

如果refPersonelID只是一個整數屬性,那麼上面的代碼應該工作正常。如果它不只是一個普通的整數屬性,那麼我仍然不明白問題是什麼。你遇到了什麼錯誤?

我給你如何設置一個導航屬性的例子,使用表1 & 表2。我假設它們之間的一對多關係,所以表1有一個名爲Table2s,& 表2有一個名爲表1導航屬性導航集合屬性。我並不完全瞭解您實際要做什麼,但下面的示例代碼說明了設置導航屬性的方式正確

要設置表2的表1的財產,你可以這樣做:

private void UpdateTable1 
{ 
    //retrieve the Table1 entity that corresponds to the required integer ID value (someIdValue) 
    var table = this.Details.DataWorkspace.ApplicationData.Table1Set.SingleOrDefault(someIdValue); 

    //assign the retrieved entity to the navigation property 
    this.Table1 = table; 

    //you CAN'T do this 
    this.Tbale1.ID = someIdValue; 
} 
+0

感謝您的回覆,但我無法設置主鍵,它只能讀取,表格位於不同的Odatas中。你有任何示例代碼? – 2013-02-14 14:47:06

+0

我沒有說設置KEY值,我知道它們是隻讀的(來自LightSwitch使用的實體框架),我說設置參考。你沒有給出導航屬性的名稱,所以我不能更具體。如果你正在編寫INSIDE LightSwitch,OData沒有任何區別。如果你向我展示代碼(完整的方法,不只是它的一部分,它需要在上下文中),也許我可以指出你錯誤的地方。 – 2013-02-15 00:26:08

+0

_「它不會被自動設置,你必須添加一個記錄到Table2中,並在Table1的Inserting方法中自己設置引用。」_我設置了引用,但它不起作用。我能怎麼做?謝謝你的幫助 – 2013-02-19 10:15:15