1

Ich bin neu in .NET MVC. Aber dieses "Problem", an dem ich festhalte, sieht ziemlich gewöhnlich aus. Ich kann kein Tutorial oder Stackover-Thread finden, das erklärt, wie es richtig gemacht wird.NHibernate Mapping-Klasse mit Attribut des gleichen Typs

Ich habe eine Klasse, MyClass, die zwei Attribute gleichen Typs hat

public class MyClass : IEquatable<MyClass> 
{ 
    public virtual MyClass LeftChild { get; set; } 
    public virtual MyClass RightChild { get; set; } 
    ... 
} 

Jetzt habe ich Problem mit nhibernate Mapping. Zuerst versuchte ich Eins-zu-Eins-Mapping. Ich habe eine neue Instanz erstellt und NICHT Childs gesetzt, sie beibehalten (sagen wir Id = 1) und diese Instanz an View übergeben und ich habe erwartet, dass RightChild NULL und LeftChild NULL ist. Aber im debug-Modus kann ich sehen, dass das RightChild auf MyClass mit Id = 1 gesetzt wurde (wie MyClass -Instanz sich auf dieses Attribut gesetzt hat) und dasselbe mit LeftChild.

Mapping MyClass.hbm.xml

...  
<one-to-one name="LeftChild" class="MyClass"/> 
<one-to-one name="RightChild" class="MyClass"/> 
... 

Ist es richtig Ansatz mit einer Eins-zu-Eins-zu tun, oder sollte ich etwas anderes verwenden?

Antwort

1

Referenzen, bei denen unsere Tabelle Fremdschlüssel enthält, sind fast immer am besten mit many-to-one zu mappen.

denken einfach über sie als Standard Bezug auf andere Instanz (Land, Währung) ..., die versehentlich von einem gleichen Typ ist.

<many-to-one name="LeftChild" column="LeftChild_ID" class="MyClass"/> 
<many-to-one name="RightChild" column="RightChild_ID" class="MyClass"/> 

Die einzige Herausforderung, die ich sehe, ist sicher sein, dass der Server-Teil (C# -Code, app) richtig Einstellung dieser Werte sein. In dieser Art von permanenter Information gibt es kein bidirektionales Mapping. Jedes Geschwister braucht seine eigene Information, wer recht hat, wer übrig ist.

Ich meine, im Vergleich mit ähnlichen Zuordnung: Eltern-Kind (auch gleicher Typ). In diesem Fall hätten wir ein Kind, das auf Eltern verweist, und Eltern, die eine Sammlung von Kindern haben.

Aber das ist nicht das gleiche .. wieder .. wir ordnen nur eine Seite der Beziehung.

A one-to-one ist hier nicht geeignet, weil es zwei Tabellen erfordert, mit (fast) die gleiche Menge an Zeilen derselben Spalte als Schlüssel zu teilen ... Ich mag es zu benutzen, aber für Art Weitere Informationen siehe ...:

Verwandte Themen