【问题标题】:NHibernate - why items attached to a saved object are not saved to the dbNHibernate - 为什么附加到已保存对象的项目未保存到数据库
【发布时间】:2012-03-25 18:12:13
【问题描述】:

我有以下代码:

var rootFolder = new KnowledgeFolder { Archived = true, Name = path.First()};
this._folderRepository.Save(rootFolder); // this goes to the db

然后稍后:(不相关的代码不在这里)

var child = new KnowledgeFolder { Name = entry, Archived = true };
rootFolder.Children.Add(child);
//////////
this._folderRepository.FlushSession();

rootFolder 已正确保存到数据库,但我稍后添加到 Children 的其他项目不会保存。为什么?我知道如果之前从数据库下载了根文件夹,这将起作用。为什么 NHibernate 不够聪明,无法检查对象图?

//编辑

使用 fluent api 完成映射,如下所示:

mapping.HasManyBidirectional<KnowledgeFolder, KnowledgeFolder>(g => g.Children, p => p.Parent);

【问题讨论】:

  • 你能展示你对孩子们的映射吗? children 集合必须有 cascade ="all" 或类似的定义

标签: nhibernate


【解决方案1】:

您没有在子项上设置父项,因此 nhibernate 不知道关系的双方。

var child = new KnowledgeFolder { Name = entry, Archived = true };
rootFolder.Children.Add(child);
child.Parent = rootFolder;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多