流畅的nHibernate与Automapping:如何在关系的“Child”侧设置Inverse

时间:2015-07-01 12:24:28

标签: c# nhibernate fluent-nhibernate automapping

根据这个主题Fluent nHibernate with Automapping: How to get a parent or "containg" object from a child

我用“父”属性制作了课程:

class Box
{
    public virtual int Id { get; protected set;}
    public virtual IList<Item> Items {get; protected set;}
}

class Item
{
    public virtual int Id { get; protected set;}
    public virtual Box Parent {get; set;}
}

正如上面的主题所示,我编写了一个约定,它将Parent属性的键列设置为与ItemsBox的键列相同。 不同之处在于我想在Inverse属性上设置Parent,而不是在收集端。有没有可能这样做?
我试图写出IReferenceConvention的正确实现,但我没有看到那种可能性。

1 个答案:

答案 0 :(得分:0)

没有直接的语法可以使多对一关系成为反向关系。

这有一些原因:

  • 更自然
  • 并且表现更好,因为类(Parent)中的引用直接映射到数据库中的外键
  • 因为无论如何它需要在记忆中保持一致(这是你必须关心的部分),这没关系。

您可以通过使其无反转并禁止更新Parent属性来欺骗它。我不知道Fluent是否有可能。反正我也不会这样做。这只是在寻找麻烦。

使用XML映射,它看起来像这样:

<many-to-one name ="Parent"  ... insert="false" update="false">

此处示例:http://www.codeproject.com/Articles/472019/Object-Relational-Mapping-ORM-u