C# 在fluent nhibernate中映射多对二关系
我正在使用节点/链接结构,但使用fluent nhibernate映射它时遇到问题 这是我正在使用的类的简化C# 在fluent nhibernate中映射多对二关系,c#,database,fluent-nhibernate,C#,Database,Fluent Nhibernate,我正在使用节点/链接结构,但使用fluent nhibernate映射它时遇到问题 这是我正在使用的类的简化 类节点 { 公共虚拟IList链接{get;set;} } 类链接 { 公共虚拟节点StartNode{get;set;} 公共虚拟节点EndNode{get;set;} } 一个节点可以有许多链接连接到它。 链路必须连接到两个节点 我需要知道哪个节点是开始节点和结束节点,所以它们必须是特定的。这就是为什么我不能使用列表并将其限制为两个节点 有人遇到过这个问题并找到了解决办法吗 编辑
类节点
{
公共虚拟IList链接{get;set;}
}
类链接
{
公共虚拟节点StartNode{get;set;}
公共虚拟节点EndNode{get;set;}
}
一个节点可以有许多链接连接到它。
链路必须连接到两个节点
我需要知道哪个节点是开始节点和结束节点,所以它们必须是特定的。这就是为什么我不能使用列表并将其限制为两个节点
有人遇到过这个问题并找到了解决办法吗
编辑:澄清问题我没有使用自动映射,我使用的是explisit映射方法:References、HasMany和HasManyToMany。基本上遵循介绍性教程中的方法: 我也没有数据库,我将使用nhibernate从映射创建数据库模式
我想问的是,如何创建多对二关系?没有特殊的多对二关系,但您可能会这样做:
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);
}
}
公共类节点映射:类映射
{
公共节点映射()
{
//Id和节点中映射的任何其他字段
有许多(x=>x.Links);
}
}
公共类链接映射:类映射
{
公共链接地图()
{
//Id和节点中映射的任何其他字段
参考(x=>x.StartNode);
引用(x=>x.EndNode);
}
}
同样,这只是上面的一个简要概述。例如,如果要级联任何创建/更新/删除操作,您可能需要额外的映射属性。那么您的问题到底是什么?如何映射链接、节点或两者?另外,您是否正在进行自动映射,或者是否正在使用现有的数据库表(如果有,请发布这些表)?我已经更新了这个问题,希望它能澄清问题:)