用流利的nhibernate映射多对二关系

时间:2011-05-09 23:25:36

标签: c# database fluent-nhibernate

我正在使用节点/链接结构,但是我在使用流畅的nhibernate映射它时遇到了问题。

这是我正在使用的类的简化。


class Node
{
  public virtual IList Links { get; set; }
}

class Link
{
  public virtual Node StartNode { get; set; }
  public virtual Node EndNode { get; set; }
}

节点可以连接许多链接。 链接必须连接到两个节点。

我需要知道哪个节点是起始节点和结束节点,因此它们必须是特定的。这就是为什么我不能使用列表并将其限制为两个节点。

是否有人遇到此问题并找到了解决方案?

修改:清除问题
我没有使用Automapping,我正在使用explisit映射方法:References,HasMany和HasManyToMany。基本上遵循介绍性教程中的方法:http://wiki.fluentnhibernate.org/Getting_started#Your_first_project

我也没有数据库,我将使用nhibernate从映射创建数据库模式。

我要问的是,如何创建多对二关系?

1 个答案:

答案 0 :(得分:1)

嗯,这里没有特别的多对两个关系,但你可能会做的是这样的事情:

public class NodeMap : ClassMap<Node>
{
    public NodeMap()
    {
        //Id and any other fields mapped in node

        HasMany(x => x.Links);
    }
}

public class LinkMap : ClassMap<Link>
{
    public LinkMap()
    {
        //Id and any other fields mapped in node

        References(x => x.StartNode);
        References(x => x.EndNode);
    }
}

这只是上面的简要概述。如果您想要级联任何创建/更新/删除操作,则可能需要其他映射属性。

相关问题