我有有1至1 .. *關係(這意味着總是會有的「狀態」表中的記錄特定ID兩個表流利的API,構建1:*關係
|Area| | Status |
------ -------------------
|[Key] ID | ----> |[Key] ID |
| Name| |[Key] Start Date |
| End Date |
我有建在我的數據層的關係如下。
區
HasMany(s => s.Statuses)
.WithRequired()
.HasForeignKey(s => s.Id);
狀態
HasRequired(a => a.Area)
.WithMany(s => s.Statuses)
.HasForeignKey(s => s.Id);
我有一個通用的'AllIncluding'方法,我用它來收集關聯的數據。在調試器中,我可以查看查詢並複製/粘貼到我的Oracle數據庫並執行。它按我的預期工作,並返回適當的行數。
問題是,在調試器中執行後,我瀏覽記錄集並找到完全不同的一組數據(縮減集)。
我的想法是,這是因爲我有圖中描述的定義的鍵。我可以創建有關... the upper bound of the multiplicity of the Dependent Role must be '1'
的錯誤,並通過修改狀態表上的鍵來修改調試器中返回的記錄集。 這似乎表明記錄關係試圖刪除狀態表中的重複項以創建聯接?我試圖在Oracle中通過執行group by trunc(start_date)
或其他類似的查詢來重新創建此操作,但無法命中返回結果的確切行。
它只證實我懷疑Fluent API中定義的映射和關係必須是錯誤的,但我不確定如何正確表示這一點。
最終我只想在Fluent API中創建1 - > 1 .. *關係。
謝謝!
這將有助於查看類定義。實際上'Status'似乎是'Area'和一些存儲「真實」狀態的狀態表之間的聯結類,否則多對多關係似乎更合適。但是很難從你的描述中拼湊出發生的事情。 –