我想添加一個我原本沒有的關聯。我意識到兩張表在技術上是相關的,並且某些導航屬性可能會簡化我手動完成的操作。表格和它們的鍵看起來像這樣:EF4:創建一個0..1到許多協會
Import
Primary Key:
Number : Int32
Date : DateTime
Hour
Primary Key:
DepartmentID : Int32
UserNumber : Int32
Date : DateTime
該關聯被命名爲ImportHour。 Import.Number映射到Hour.UserNumber,並將Import.Date映射到Hour.Date。我試圖在導入時添加一個0..1的關聯,並且在帶導航屬性的小時*上添加一個關聯,並且不需要額外的外鍵。當我這樣做時,設計師告訴我該關聯沒有被映射。如果我然後生成DDL,它會創建新的字段Hours.Import_Date和Hours.Import_Number(Hours是Hour實體的實際數據庫表名稱)。如果我手動映射字段,我結束了以下錯誤:
Error 3021: Problem in mapping fragments starting at line 332:
Each of the following columns in table Hours is mapped to multiple conceptual side properties:
Hours.Date is mapped to <ImportHour.Hour.Date, ImportHour.Import.Date>
Hours.UserNumber is mapped to <ImportHour.Hour.UserNumber, ImportHour.Import.Number>*
我真的不知道發生了什麼,我不認爲我理解的「映射」過程不夠好,想出解決辦法。它看起來好像它想要一個五鍵,而不是意識到一個鍵映射到另一個鍵。我看看我的其他一對多關聯,他們甚至沒有表映射;我認爲他們有參照約束,但你顯然不能有一個0..1到多個關聯的參照約束。
你是如何創建實體對象的開始?你有沒有對實體對象進行任何自定義?如果不是,並且作爲最後的努力,只需重建對象(我假設你在VS中使用了模板)。如果您生成POCO支持,然後將POCO實體從ObjectContext拆分爲單獨的庫,可能會產生問題。 – IAbstract 2011-04-29 21:35:14
我用設計器構建了實體對象,然後使用「從模型生成數據庫」生成一個我爲執行創建數據庫而執行的.sql文件。我沒有添加任何定製。 – 2011-04-29 22:29:10
我似乎通過選擇一對多關聯來「固定」它,並使用我先前存在的列進行參照約束。不知道如果我嘗試加載沒有匹配的導入值的小時值會發生什麼情況。 – 2011-04-29 22:57:06