2009-04-16 9 views
2

J'ai un cas de mappage NHibernate très spécial. La classe a une référence à elle-même.Comment mapper une auto-référence dans NHibernate

public class MyClass 
{ 
    public Guid Id { get; set; } 
    public MyClass SelfReference { get; set; } 
} 

La table de base de données possède un champ de clé étrangère sur la clé primaire de la même table. Et pire encore, cette référence auto peut être nulle. Est-ce possible de cartographier et comment cela peut-il être fait?

Répondre

3

one-to-one peut être utilisé pour synchroniser les clés primaires et est rarement utilisé, dans mon expérience, many-to-one est l'association la plus "naturelle" pour les références "normales":

<many-to-one name="SelfReference" class="MyClass" column="SelfReference_FK" /> 
0

On dirait que vous le traiteriez comme n'importe quelle autre relation en tête-à-tête?

+0

Est-ce que ça marche si ça peut être nul? –

0

Je pense que c'est un simple one-to-one.

J'espère que cela aidera u

<one-to-one 
name="PropertyName" 
class="ClassName" 
cascade="all|none|save-update|delete" 
constrained="true|false" 
fetch="join|select" 
property-ref="PropertyNameFromAssociatedClass" 
access="field|property|nosetter|ClassName"/> 
3

On dirait que vous êtes prêt à mapper un arbre:

http://nhibernate.hibernatingrhinos.com/16/how-to-map-a-tree-in-nhibernate

+0

Est-ce que NHibernate peut uniquement mapper une relation plusieurs-à-un? Habituellement, vous avez toujours besoin des deux sites. –

+0

Vous pouvez également mapper l'autre extrémité. Vous aurez à la fin: un un-à-plusieurs qui contient les enfants du nœud actuel un un-à-un qui se réfère au parent du nœud actuel –

+2

le lien est rompu, pouvez-vous le réparer? – Erez

Questions connexes