我有两张桌子:
- 收据
- 收据日志
Receipt
有 0...nReceiptJournals
此 (in Receipt
) 的映射如下所示:
this.HasMany(x => x.ReceiptJournals).AsSet().Fetch.Select().Inverse().Cascade.Delete();
我使用的底层数据库是 SQL Server CE 4.0。
现在,当我执行删除语句时
const string sql = "delete from Receipt where IsFinished = 0 and IsParked = 0";
var query = NHibernateHelper.CurrentSession.CreateSQLQuery(sql);
query.ExecuteUpdate();
我得到一个例外:
无法执行本机批量操作查询:从收据中删除,其中 IsFinished = 0 和 IsParked = 0 [SQL:从收据中删除,其中 IsFinished = 0 和 IsParked = 0]
System.Exception {NHibernate.Exceptions.GenericADOException}
[System.Data.SqlServerCe.SqlCeException] {"Der Primärschlüsselwert kann nicht gelöscht werden, da noch Verweise auf diesen Schlüssel vorhanden sind. [外键约束名称 = FK_Receipt_ReceiptJournal ]"} System.Data.SqlServerCe.SqlCeException
NHibernate 与 SQL Server CE 不支持级联删除还是我做错了什么?