gpt4 book ai didi

c# - Json.NET 和 NHibernate - 反序列化持久对象

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:54 25 4
gpt4 key购买 nike

我通过 REST Web 服务从 Javascript 发送一个 JSON 集合,使用 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"
}
]
}

修改对象的属性,甚至添加和修改子对象(Keys)然后反序列化效果很好。但是,我似乎无法弄清楚如何管理子对象删除。例如,如果我删除一个子对象(使用 Object.Keys.splice),然后更新,它相关的数据库记录保持持久,即使被更新的父对象不包含它们。

此外,我还在映射文件中设置了“AllDeleteOrphan”。

    // one-to-many
HasMany(x => x.Keys)
.Inverse()
.Cascade.AllDeleteOrphan();

有什么办法可以保证通过javascript删除的子对象在反序列化和更新对象时被级联删除?

我还了解到,在使用 NHibernate 时,需要在更新之前通过 Keys.Remove(item) 从父集合中手动删除子对象。仅反序列化和更新会更可取(更不用说可扩展性了)。有机会吗?

最佳答案

您应该能够更新,然后看到这些变化级联,但我相信这个问题与被标记为反向的集合有关。

Inverse=true(nhibernate 的 .Inverse() 具有约束力)就像在说“我不管理这种关系”。由于此绑定(bind),父对象不会删除/更新集合,因为子对象管理关系。

这是否有意义,如果没有更全面地了解您的领域,我真的不能说。

关于c# - Json.NET 和 NHibernate - 反序列化持久对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com