我有一个表 Communication,它引用了 PersonCompany。在 PersonCompany 的映射中,我为此参考定义了 Cascade-Delete:
this.HasMany(x => x.Communications)
.AsSet()
.KeyColumn("PersonCompanyId")
.Fetch.Select()
.Inverse()
.Cascade.Delete();
但是当我现在执行闲置的 HQL 查询时:
var sql = "delete from PersonCompany where Person.Id in (:idList) or Company.Id in (:idList)";
和
var query = NHibernateHelper.CurrentSession.CreateQuery(sql);
query.SetParameterList("idList", contactIdList);
query.SetTimeout(0);
query.ExecuteUpdate();
我总是得到这个 SqlException:
DELETE 语句与 REFERENCE 约束“FK_PersonCompany_Communication”冲突。冲突发生在数据库“proconact”、表“dbo.Communication”、列“PersonCompanyId”中。该语句已终止。
我认为,NHibernate 现在应该删除通信中引用的记录级联 - 不应该吗?
我希望有人可以帮助我,我做错了什么。