可以这样做吗?这是一个好习惯(在同一个对象中有一个对象)?

时间:2011-12-25 19:27:20

标签: nhibernate

我正在使用nhibernate并且有一个名为tiers的表。用户可以在表格中填写所需的所有层级。

看起来像这样

Use Teir one up to $600 then use --
Use Teir two up to $1000 then use tier1
Use Tier three up to $1500 then use Tier 1
Use Tier four up to $2000 then use Tier 2

在我的数据库中,我有一个名为“useTierAfter”的字段。这将存储限制后应使用的层的PK。

如果第二层设置为1000美元上限超过该金额将使用第一层金额。

现在我不确定在我的流利/域名nhibernate映射中我应该只有一个Guid作为属性还是我应该有一个Tier对象?

   public class Tier
    {
        public virtual Tier UseTierAfter { get; set; }
        // or
        public virtual Guid UseTierAfter { get; set; }
    }

我不确定什么是更好的方法。

3 个答案:

答案 0 :(得分:0)

这可以做到,而且非常合理。但是你没有包含相同对象的对象。只是一个包含对同一类的另一个对象的引用的对象。

答案 1 :(得分:0)

您应始终映射与之相关的对象,而不是外键等。
因此,在您的示例中,您将拥有Tier属性,这非常合理。

答案 2 :(得分:0)

我认为你在这里有一个父母的孩子关系,这很好。在数据库中,您可以使用一个带有外键的表来引用主键。在映射中只映射对象。一对多或精通参考文献。