Nous sommes confrontés au problème de l'application de plusieurs-à-plusieurs relation en utilisant l'automapping nhibernate fluent.Beaucoup à plusieurs relation en utilisant Fluent Nhibernate Automapping
La forme simplifiée du modèle de domaine sont les suivantes:
public class Group
{
private readonly IList<Recipient> _recipients = new List<Recipient>();
public virtual IList<Recipient> Recipients
{
get { return _recipients; }
}
}
public class Recipient
{
private readonly IList<Group> _groups = new List<Group>();
public virtual IList<Group> Groups
{
get { return _ groups; }
}
}
Comme le code décrit ci-dessus que le groupe et le bénéficiaire ayant plusieurs à plusieurs. Nous utilisons la fonction automapping de nhibernate fluent pour mapper notre modèle de domaine avec la base de données. Nous devions donc utiliser la Convention pour l'automapping. code suivant est nous avons utilisé pour plusieurs à plusieurs congrès: -
public class ManyToManyConvention : IHasManyToManyConvention
{
#region IConvention<IManyToManyCollectionInspector,IManyToManyCollectionInstance> Members
public void Apply(FluentNHibernate.Conventions.Instances.IManyToManyCollectionInstance instance)
{
if (instance.OtherSide == null)
{
instance.Table(
string.Format(
"{0}To{1}",
instance.EntityType.Name + "_Id",
instance.ChildType.Name + "_Id"));
}
else
{
instance.Inverse();
}
instance.Cascade.All();
}
#endregion
}
J'ai trouvé cette solution ici:
Mais dans le code ci-dessus pendant le débogage du temps pour> Groupes et receveurs pour Groupes-> Destinataire instance.OtherSide ne vient pas nul. L'hypothèse était la première fois instance.OtherSide ne sera pas nul et la deuxième fois il sera nul comme la relation est appliquée d'un côté, donc nous allons juste appliquer inverse à cela. Il crée donc 2 tables de correspondance qui sont identiques. Il est chargé dans la base de données d'avoir 2 tables du même schéma. Même lorsque j'essaie de sauvegarder notre modèle de domaine dans une base de données en utilisant de nombreuses relations. Il enregistre seulement 1 côté, c'est-à-dire qu'il enregistre les destinataires dans les groupes, mais n'enregistre pas les groupes dans les destinataires. Dans la base de données, il n'a pas d'entrée dans une seule table de mappage. Donc, la question est: faisons-nous la bonne chose? Si non alors comment le faire.
version de FNH utilisez-vous? – Firo
@Firo - C'est 1.2.0.0 – Niraj