Je rencontre un problème en essayant d'obtenir une relation many-to-many pour enregistrer l'enregistrement de jointure dans NHibernate en utilisant Automapper dans Fluent NHibernate.Fluent NHibernate Plusieurs à ne pas enregistrer
Il ya beaucoup d'autres messages à ce sujet sur S.O mais jusqu'à présent, aucun d'entre eux ont résolu le problème, se demandant si je fais quelque chose de différent comment. J'ai la configuration de l'application pour mapper, et quand je crée manuellement l'enregistrement de jointure dans la base de données, je récupère les données, donc au niveau de la lecture, il mappe correctement, mais il ne va pas persister la relation.
Voici la correspondance pertinente. J'utilisais automapper avec les conventions par défaut, mais j'ai finalement essayé cela en me basant sur un autre post SO.
.Mappings(m => {
m.AutoMappings.Add(AutoMap.AssemblyOf<User>);
m.AutoMappings.Add(AutoMap.AssemblyOf<PostalCode>);
m.AutoMappings.Add(
AutoMap.AssemblyOf<VPA>()
.Override<VPA>(v =>
v.HasManyToMany(x => x.PostalCodes)
.Table("PostalCodesToVPAs")
.ParentKeyColumn("PostalCode_Id")
.ChildKeyColumn("VPA_Id")
.Cascade.SaveUpdate())
.Override<PostalCode>(p =>
p.HasManyToMany(x => x.VPAs)
.Table("PostalCodesToVPAs")
.ParentKeyColumn("VPA_Id")
.ChildKeyColumn("PostalCode_Id")
.Cascade.SaveUpdate().Inverse())
);
})
Mon enregistrement actuel ressemble à ceci. Cela peut être exagéré car j'économise explicitement le code postal et vpa mais j'ai beaucoup lu sur les personnes ayant des problèmes avec la ligne inverse dans la cartographie, donc je voulais essayer les deux. Ça n'a pas marché.
var postalCode = new PostalCode {Value ="90210", CreatedBy = 0, CreationDate = DateTime.Now, ModifiedBy = 0, ModifiedDate = DateTime.Now};
vpa.PostalCodes.Add(postalCode);
postalCode.VPAs.Add(vpa);
PostalCodeService.Save(postalCode);
VPAService.Save(vpa);
sous les couvertures les appels service.save font
return (int)Session.Save(obj);
Quelqu'un at-il vu cela et savoir pourquoi il ne sauverait pas la jointure dossier?