Je suis un débutant NHibernate et fluent-nhibernate. Et j'ai un problème avec la contrainte unique et la cartographie nhibernate.Ajouter une contrainte unique multi-colonne sur une clé étrangère en utilisant la mise en correspondance fluide-nhibernate
J'ai la partie suivante du modèle de domaine.
public class Batch
{
public virtual int Id {get; set;}
public virtual string Name {get; set;}
public virtual IList<BatchParameter> BatchParameters {get; set;}
}
public class BatchParameter
{
public virtual int Id {get; set;}
public virtual string Name {get; set;}
public virtual Batch Batch {get; set;}
}
J'essaie d'utiliser couramment-NHibernate pour le mapper sur le db (SQLServer) en utilisant AutoMapping. Je veux mettre en place ma db afin d'avoir:
clés primaires sur les propriétés de « Id »
une clé étrangère sur la table BatchParamets
une unique contrainte sur la table de lots sur la colonne Nom
une contrainte unique sur la table BatchParameters sur les colonnes Nom et BATCH_ID
J'ai écrit ce code:
public class BatchMapping : IAutoMappingOverride<Batch>
{
public void Override(FluentNHibernate.Automapping.AutoMapping<Batch> mapping)
{
mapping.Id(b => b.Id);
mapping.HasMany<BatchParameter>(p => p.BatchParameters).Cascade.All().Inverse();
}
}
public class BatchParameterMapping : IAutoMappingOverride<BatchParameter>
{
public void Override(FluentNHibernate.Automapping.AutoMapping<BatchParameter> mapping)
{
mapping.Id(b => b.Id);
mapping.Map(b => b.Name).Unique();
//mapping.Map(p => p.Name).UniqueKey("Batch_Parameter");
//mapping.Map(p => p.Batch.Id).UniqueKey("Batch_Parameter");
}
}
Pas de problème pour les clés primaires, la clé étrangère et la première contrainte unique. Un peu de mal de tête pour la contrainte unique.
Quelqu'un peut-il me montrer la voie droite ???
Merci!