2009-07-11 8 views
0

J'utilise FluentNHibernate mais NHibernate XML suffira.NHibernate avec des modèles ayant des propriétés qui sont des classes

Dire que j'ai ce modèle

public User 
{ 
    public User() 
    { 
     ProfilePicture = new Picture(); 
    } 
    public Guid Id { get; private set; } 
    public Picture ProfilePicture { get; set; } 
} 

public Picture 
{ 
    int width; 
    int height; 
} 

Comment puis-je dire NHibernate comment stocker et retrive le ProfilePicture?

Je sais parler couramment comme son

Map(x => x.ProfilePicture); 

mais cela ne fonctionne pas.

Répondre

2

Si l'utilisateur et ProfilePicture proviennent de deux tables différentes, vous devez utiliser References:

References(x => x.ProfilePicture); 

Si vous devez spécifier le nom de la colonne, il est (par exemple)

References(x => x.ProfilePicture, "ProfilePictureId"); 

Il y a plusieurs autres exemples pour différents cas d'utilisation dans le documentation.

Si ProfilePicture est stocké dans la table utilisateur alors vous mapper comme Component:

Component(x => x.ProfilePicture, c => 
    { 
     c.Map(x => x.width); 
     c.Map(x => x.height); 
    }); 
+0

Je vais utiliser le composant. Comment puis-je connaître la convention de dénomination? –

+0

Fluent NHibernate a une convention de dénomination par défaut ou vous pouvez spécifier la vôtre. Personnellement, je préfère cartographier toutes les propriétés, etc. plutôt que d'utiliser des conventions. Voici le doc. sur les conventions: http://wiki.fluentnhibernate.org/show/StandardMappingConventions –

Questions connexes