Я отправляю коллекцию JSON из Javascript через веб-сервис REST для десериализации с использованием Json.NET и последующего обновления в БД с помощью NHibernate (я использую Fluent).Параметры, которые я использую для десериализации Json.NET:
JsonConvert.DeserializeObject<T>(jsonString,
new JsonSerializerSettings {
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});
Мой объект Json:
{
"ID": 1,
"Name": "ObjectName",
"Keys": [
{
"ID": 6,
"Name": "ID"
}
]
}
Изменение свойств объекта и даже добавление и изменение дочерних объектов(Ключи), а затем десериализация прекрасно работает.Тем не менее, я не могу понять, как управлять удалением дочерних объектов.Например, если я удаляю дочерний объект (используя Object.Keys.splice
), а затем обновляю, запись БД, к которой он относится, остается постоянной, даже если обновленный родительский объект не содержит их.также установили 'AllDeleteOrphan' в файле отображения.
// one-to-many
HasMany(x => x.Keys)
.Inverse()
.Cascade.AllDeleteOrphan();
Есть ли способ гарантировать, что дочерние объекты, удаленные через JavaScript, будут каскадно удалены при десериализации и обновлении объекта?Я также читал, что при использовании NHibernate, дочерние объекты должны быть удалены вручную из родительской коллекции, через Keys.Remove(item)
, перед обновлением.Было бы гораздо предпочтительнее (не говоря уже о масштабируемости) просто десериализовать и обновить.Есть шанс?