我有以下课程:
public class Element
{
public Guid Id { get; set; }
public ElementRouting route { get; set; }
}
元素可以路由到父类子系列中的另一个元素 - 类关系由以下类表示:
public class ElementRouting
{
public Guid Id { get; set; }
public Element ParentElement { get; set;}
public Element ChildElement { get; set; }
}
我的NHibernateMap for Element看起来像这样:
public class ElementMapping : ClassMap<Element>
{
public ElementMapping()
{
Id(x => x.Id).GeneratedBy.Assigned();
Not.SelectBeforeUpdate();
References(x => x.Route).Column("ElementRoutingId").Nullable();
Table("Elements");
}
}
...而ElementRouting的地图如下:
public class ElementRoutingMapping : ClassMap<ElementRouting>
{
public ElementRoutingMapping()
{
Id(x => x.Id).GeneratedBy.Assigned();
Map(x => x.ChildElement).Column("ElementId").Nullable();
Map(x => x.ParentElement).Column("ElementId").Nullable();
Table("ElementRoutings");
}
}
在I session.Flush()
处,我有一个Element对象,其属性为ElementRouting。我使用此InnerException详细信息获取HibernateException(执行批处理查询时发生异常):
{“UPDATE语句与FOREIGN KEY约束冲突”FK54CBB3751C1EAB64“。冲突发生在数据库”myDataBaseName“,表”dbo.ElementRoutings“,列'Id'。}
任何人都可以向我解释我做错了吗?
答案 0 :(得分:2)
对于Element Mapping对路径的引用,使用:
References(x => x.TonsRoute).Column("TonsRouteId").Nullable().Cascade.All();
不会引起冲突。