簡體   English   中英

多列多對一

[英]many-to-one with multiple columns

我有一個遺留數據庫和兩個表之間的一對一關系。 關鍵是關系使用兩列,而不是一列。 有沒有辦法在nhibernate中說,當獲取一個被引用的實體時,它在join語句中使用了兩列,而不是一個? 我有一個類似的表結構

TaskProgress

  • ProgressId
  • 任務id
  • AssignmentId
  • 用戶身份

任務

  • 任務id
  • AssignmentId
  • 任務名稱

每個任務都可以在不同的任務中進行分配。 這意味着任務進度的唯一任務只能由AssignmentId和TaskId字段建立。

我想用這個:

  References(x => x.Template)
            .Columns()
            .PropertyRef()

但無法獲得如何在多列上映射連接,任何想法?

我假設您在示例代碼中使用PropertyRef,這兩列不會形成復合主鍵。 如果是這種情況,那么你運氣不好,因為property-ref只能接受一個屬性。 問題NH-1722的評論來看,這個功能顯然可以在Hibernate中使用,但還沒有移植到NHibernate。

更新:您添加的架構看起來像多對多,在任務和分配之間具有額外的數據關系。 TaskProgress是Task和Assignment之間的鏈接表。 如果TaskProgress沒有額外的UserId字段,那么您可以將其建模為簡單的多對多。 因為鏈接表有額外的數據,所以它會變得有點復雜。

具有附加數據的多對多通常通過創建表示鏈接表(TaskProgress)的對象並將該關系建模為兩個一對多關系來進行建模。 也就是說,Task和Assignment與TaskProgress具有一對多的關系。 TaskProgress具有Task,Assignment和User的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM