2010-04-10 6 views
0

J'ai un problème faisant la cartographie des classes avec propert de type dictionnaire et valeur en elle de type dictionnaire aussi, comme celui-ci:Fluid nHibernate et mappage IDictionary <DaysOfWeek, IDictionay <int, decimal >> comment?

public class Class1 
    { 
    public virtual int Id { get; set; } 

    public virtual IDictionary<DayOfWeek, IDictionary<int, decimal>> Class1Dictionary { get; set; } 
    } 

Ma cartographie ressemble à ceci:

Id(i => i.Id); 
HasMany(m => m.Class1Dictionary); 

Ce n » t travail. La chose importante que je veux avoir tout dans une table pas dans deux. WHet j'avais fait classe de ce deuxième IDictionary j'ai plus gros problème. Mais d'abord je peux essayer comme c'est maintenant.

+1

Cela a fait exploser ma tête ... o_O –

Répondre

1

Il n'est actuellement pas possible d'utiliser des collections imbriquées de tout type dans NHibernate.

Au lieu de cela, vous devez définir votre propriété comme suit:

public virtual IDictionary<DayOfWeek, Class2> Class1Dictionary { get; set; } 

Et ajouter une nouvelle classe:

public class Class2 
{ 
    public virtual decimal this[int key] 
    { 
     get { return Class2Dictionary[key]; } 
     set { Class2Dictionary[key] = value; } 
    } 

    public virtual IDictionary<int, decimal> Class2Dictionary { get; set; } 
} 

De cette façon, vous pouvez mapper les classes et dictionnaires normalement, et encore accéder à votre dictionnaire comme:

class1Instance.Class1Dictionary[DayOfWeek.Sunday][1] = 9.4 
+0

Ok, mais quand je fais lik e-ce que j'ai encore un problème avec la cartographie pouvez-vous écrire comment correctement mapper cela? – szkra

+0

Je n'utilise pas Fluent. Avec hbm, c'est un simple , lisez http://knol.google.com/k/fabio-maulo/nhibernate-chapter-6/1nr4enxv3dpeq/9. Je ne sais pas ce qu'est l'équivalent FNH. –

+0

J'ai essayé Votre solution mais maintenant je ne sais pas comment mapper cela même en hbm. Pouvez-vous m'aider ? – szkra