0

カスケードをよりよく理解するため。以下の状況でノードCとDが持続しない理由を誰かが説明できますか?ありがとう。

public class Node : Entity
{
    public virtual Node Previous { get; set; }
    public virtual Node Next { get; set; }
    public virtual string Name { get; set; }

    public Node() { }
    public Node(string Name)
    {
        this.Name = Name;
    }

    public virtual void Connect(Node Previous, Node Next)
    {
        this.Previous = Previous;
        this.Next = Next;
    }
}

マッピング:

public class NodeMap : IAutoMappingOverride<Node>
{
    public void Override(AutoMapping<Node> mapping)
    {
        mapping.References(x => x.Previous).Cascade.SaveUpdate(); 
        mapping.References(x => x.Next).Cascade.SaveUpdate(); 
    }
}

データ作成:

INHibernateRepository<Node> NodeRepository = new NHibernateRepository<Node>();

Node A = new Node("A");
Node B = new Node("A");
Node C = new Node("C");
Node D = new Node("D");
Node E = new Node("E");
Node F = new Node("F");

A.Connect(null, B);
B.Connect(A, E);
C.Connect(B, E);
D.Connect(B, E);
E.Connect(B, F);
F.Connect(E, null);

NodeRepository.SaveOrUpdate(A);
NodeRepository.DbContext.CommitChanges();
4

1 に答える 1

2

あなたのグラフは次のようになります

A <-> B <-> E <-> F

B <- C -> E
B <- D -> E

ご覧のとおり、AtoCおよび fromAへのリンクはありませんD(反対方向のみ)。

したがって、保存すると、ANHibernate は のすべての依存関係を保存しようとし、A保存されていない を見つけBE次にF.

于 2012-08-01T12:57:29.083 に答える