我想學習NHibernate,我偶然發現了一個組合的數據庫設計/「學習NHibernate如何工作」的問題。避免與NHibernate的對象身份
對我而言,我試圖設計一個帶有行和列的簡單表格,其中每行都有一個「描述」,然後有一個「列值」列表(各種列),其中包含的數據爲以及排序信息。在代碼中,它會是這個樣子:
public class Row
{
public virtual int ID { get; set; }
public virtual string Description { get; set; }
public virtual ICollection<Column> Columns { get; set; }
}
public class Column
{
public virtual Row ParentRow { get; set; }
public virtual int SortID { get; set; }
public virtual string Value { get; set; }
}
我的最終目標是要建立一個數據庫架構,這將是...
- 兩個表,「行」和「列」
- 行有兩列:ID和說明。
- 列有三列:ParentID,SortID和Value。
由於列只能屬於一行,理想情況下每個列在每個ParentID中都有一個唯一的排序ID,所以Column表的主鍵可以是ParentID和SortID,而不是第四個「ID 「專欄。
但是,NHibernate每時每刻都在與我搏鬥。它堅持我必須有一個列字段的ID。我想我有幾個問題:
- 我的「模式目標」本身是否存在嚴重缺陷?對於每個Column來說,它是否有更好的設計來擁有自己的ID?如果是這樣,爲什麼?
- 無論我正在尋找的模式是否是一個好設計,NHibernate中都可以完成這項工作嗎?到目前爲止,我已經成功地映射了「Row」類,但是如果沒有NHibernate,我不能映射「Column」類,因爲我不得不爲它提供一個ID。 (對於它的價值,我使用Fluent NHibernate)。我如何繞過這個?