У меня возникла проблема с попыткой получить много-много отношений, чтобы сохранить запись соединения в NHibernate с помощью Automapper в Fluent NHibernate.Fluent NHibernate Многие из многих не сохраняют
Есть много других сообщений об этом на S.O, но пока никто из них не решил проблему, задаваясь вопросом, не делаю ли я что-то другое.
У меня есть настройка приложения для сопоставления, и когда я вручную создаю запись соединения в БД, я возвращаю данные, поэтому на уровне чтения он правильно отображает, но он не будет сохраняться.
Вот соответствующее сопоставление. Я использовал automapper с соглашениями по умолчанию, но в итоге попробовал это на основе другого сообщения 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())
);
})
Мое фактически сохранение выглядит так. Это может быть чрезмерным, поскольку я явно сохраняю как почтовый код, так и vpa, но я много читаю о людях, имеющих проблемы с обратной строкой в сопоставлении, поэтому я хотел попробовать оба. Это не сработало.
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);
под одеялом на service.save вызовы делают
return (int)Session.Save(obj);
Кто-нибудь видел это и знаю, почему это не было бы сохранить присоединиться запись?