【发布时间】:2010-12-30 13:07:13
【问题描述】:
我正在通过 REST Web 服务从 Javascript 发送 JSON 集合,以使用 Json.NET 进行反序列化,然后最终使用 NHibernate 在数据库中更新(我正在使用 Fluent)。
我的 Json 是:
{
"ID": 1,
"Name": "ObjectName",
"Keys": [
{
"ID": 6,
"Name": "ID"
}
]
}
我的困难在于,当我从 Javascript 中的“键”集合中删除一个孩子时,后续更新只会使孩子的外键为空 - 它实际上并没有删除它。我已经设置了我认为正确的父子映射:
对象一对多映射:
// one-to-many
HasMany(x => x.Keys)
.KeyColumn("ObjectID")
.Cascade.AllDeleteOrphan();
键多对一映射:
// many-to-one
References(x => x.Object)
.Cascade.None();
执行更新的 NHibernate 代码:
using (var transaction = Session.BeginTransaction())
{
Session.SaveOrUpdate(entity);
transaction.Commit();
}
Session.Flush();
虽然这个例子是双向的,但我也尝试过单向映射,但到目前为止还没有效果;尽管关联本身已损坏(FK 设置为 null),但子记录仍保留在数据库中。
我遗漏了什么明显的东西?
【问题讨论】:
标签: nhibernate fluent-nhibernate persistence json.net