【发布时间】:2011-10-29 03:17:57
【问题描述】:
我正在尝试学习 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 无时无刻不在与我作对。它坚持我必须有一个 Column 字段的 ID。我想我有几个问题:
- 我的“架构目标”本身是否存在严重缺陷?每个 Column 都有自己的 ID 真的是更好的设计吗?如果是,为什么?
- 无论我正在寻找的模式是否是一个好的设计,这可以在 NHibernate 中完成吗?到目前为止,我已经成功地映射了“Row”类,但是如果没有 NHibernate 抱怨我必须为其提供 ID,我就无法映射“Column”类。 (对于它的价值,我正在使用 Fluent NHibernate)。我该如何规避呢?
【问题讨论】:
标签: c# nhibernate