流利的NHibernate SaveOrUpdate发出具有外键约束的删除错误

时间:2018-12-04 23:53:34

标签: c# nhibernate fluent-nhibernate

上下文:我们具有以下类的定义:

class Network
{
   List<Node> nodes;
   List<Node> links;
}

class Node
{
}

class Link
{
   Node StartNode;
   Node EndNode;
}

映射:

public LinkMap()
{
            References(x => x.StartNode, "start_node_id").Class(typeof(Node)).Not.LazyLoad().Index("start_node_index");
            References(x => x.EndNode, "end_node_id").Class(typeof(Node)).Not.LazyLoad().Index("end_node_index");
}

NodeMap中没有链接到Link类的映射代码。

我所做的操作是打开一个会话并阅读网络;然后假设我们有三个节点;和一个链接(具有startnode = node1和endnode = node2)

1)将链接的起始节点重新分配给node3

2)删除节点1

但是

using (var session = sessionFactory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    session.SaveOrUpdate(network);
                    transaction.Commit();
                }
                session.Flush();
            }

给我一​​个错误“由于外来恒星而无法删除”。

仅当我更改映射以添加ForeignKey(“ none”)时,它才有效。我还检查了sql语句的输出日志,它确实表明链接的update语句在删除节点之前出现。但是为什么它仍然会出现上述错误?

0 个答案:

没有答案