我在我的数据库3个表:NHibernate的 “级联=” 全删除,孤儿”错误
- 项目(ID,姓名)
- 标签(ID,姓名)
- ProjectsTagss(ID,专案编号,标签识别)
正如你可以看到ProjectsTags表是一个桥接表
这里是我的功能NHibernate映射
ProjectMap.cs:
Map(x => x.Name).Not.Nullable();
HasMany(x => x.ProjectsTags).AsBag().Inverse()
.Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);
ProjectsTagsMap.cs:
References(x => x.Project).Not.Nullable();
References(x => x.Tag).Not.Nullable();
TagMap.cs:
Map(x => x.Name).Not.Nullable();
正如你所看到的,我历史上没有链接到任何其他的标签表。我现在需要生成一个报告来显示标签以及该标签的使用频率,因此我需要从标签加入ProjectsTag。我想加入这一行到tagsmap:
HasMany(x => x.ProjectsTags).AsBag().Inverse()
.Cascade.AllDeleteOrphan().Fetch.Select().BatchSize(80);
但是当我去更新标签对象的名称和提交,我得到这个错误:
与级联集合=“全删除-orphan“不再被所属实体实例引用
任何人都可以看到任何与我添加的内容有关的错误,当我仅更新标记表时,会导致此nhibernate异常。同样我的目标是能够做一些事情,如:
Tag.ProjectTags.Count();
这里作为要求一些额外的代码:
我的标记类:
public class Tag
{
public virtual IList<ProjectTag> ProjectTags { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
告诉我们在哪儿更新标签的代码。请写一个有意义的标题来表达这个问题。 – 2011-04-27 11:38:12
@Stefan Steinegger - 更新标题以反映错误 – leora 2011-04-27 12:35:48
当您从列表中删除项目并在另一个列表中重新使用项目时,会发生错误。所以请向我们展示您编写的用于更新数据的代码。 – 2011-04-28 08:20:49