已经提出了类似的问题,但我没有找到答案,所以这里有。我有以下Fluent关系映射:
HasMany<UserFilter>(x => x.UserProjectFilters)
.KeyColumns.Add("UserProfileID")
.Cascade.All()
.AsSet()
.Inverse()
.Cache.ReadWrite();
当我尝试删除父(Filter实体)时,删除不会级联;我看到了异常:“DELETE语句与REFERENCE约束冲突......”。在NH Profiler中,我看到正在为父级生成Delete语句,但没有为子级生成。我希望任何孩子的删除都能在父母之前执行。我做错了什么?
这是关系的UserProfileFilter结束:
References<Filter>(x => x.Filter)
.Column("FilterID")
.LazyLoad()
.Cascade.SaveUpdate();
谢谢! 安迪
答案 0 :(得分:1)
我认为您需要Cascade.AllDeleteOrphan()
,因为您已将关系设置为Inverse()
答案 1 :(得分:1)
这最终成为子表上多个外键的问题,并且映射中使用了错误的键。我将上面的代码更改为以下代码,它运行得很好:
HasMany<UserFilter>(x => x.UserProjectFilters)
.KeyColumns.Add("FilterID")
.Cascade.All()
.AsSet()
.Inverse()
.Cache.ReadWrite();
感谢David的帮助!
安迪