Quelle est la meilleure façon de mapper une simple propriété du dictionnaire en utilisant Fluent NHibernate?FluentNHibernate mapping pour le dictionnaire
Répondre
Pour mapper une liste comme un dictionnaire:
HasMany(x => x.Customers)
.AsMap();
Je ne l'ai pas utilisé; donc je ne peux pas donner un exemple.
Demandez regard sur le wiki:
Cached version of the page,
Actual page
J'ai donné la version en cache de la page que le site semble être en panne.
En utilisant une simple relation de classe comme les suivantes:
public class Foo {
public virtual IDictionary<string, Bar> Bars { get; set; }
}
public class Bar {
public virtual string Type { get; set; }
public virtual int Value { get; set; }
}
Vous pouvez mapper ce avec Fluent NHibernate de cette façon:
mapping.HasMany(x => x.Bars)
.AsMap(x => x.Type);
Où Bar.Type
est utilisé comme champ clé dans la dictionnaire.
public class PersistedData
{
public virtual IDictionary<key, value> Dictionary { get; set; }
}
public class PersistedDataMap : ClassMap<PersistedData>
{
HasMany(x => x.Dictionary)
.Table("dict_table")
.KeyColumn("column_id")
.AsMap<string>("key")
.Element("value");
}
Cela carte correctement Dictionary
à la table dict_table
et utiliser column_id
pour l'associer à l'ID de base. Par ailleurs, si vous souhaitez utiliser Enum comme clé dans le dictionnaire, notez que NHibernate.Type.EnumStringType<MyEnum>
peut être utilisé à la place de la chaîne dans .AsMap<string>
pour utiliser la valeur de chaîne au lieu de l'ordinal.
Cela n'aide pas vraiment l'utilisateur. Certes, il était capable de rechercher la bonne méthode, mais l'utilisation de la méthode n'est pas évidente. – Sebazzz