我查看了其他相关帖子,但找不到任何解决方案 有时在sesstion.Flush()我得到以下错误:
{“无法执行批处理命令。[SQL:SQL不可用]”}
和内部例外:
{“UPDATE语句与FOREIGN KEY约束FK1377052553ABF955冲突。冲突发生在数据库ProcessDebug,表dbo.Adjustment,列'AdjustmentId'。语句已终止。”}
一个Process类映射:
References(p => p.CurrentAdjustment)
;
References(p => p.DefaultAdjustment)
;
HasMany(p => p.Adjustments)
.Cascade.AllDeleteOrphan()
.Inverse()
;
以上所有这些属性都属于调整类型。 只要我偶尔得到这个错误,我就无法追踪它。对于一个实体,它现在可能发生,但下次不会出现在同一段代码中......
知道可能导致问题的原因是什么?
我正在使用NH 3.2和FluentNhibernate
提前致谢
答案 0 :(得分:2)
在我的情况下,它是" NULL"在一个数据库专栏中。检查数据库数据。
外键 - >这意味着,您可以使用null i列,即用于" join"。
P.S。使用SQL事件探查器并检查nHibernate生成的SQL。
答案 1 :(得分:1)
您需要查看实际尝试执行的sql。
好像您正在尝试将主键(“AdjustmentId”)更新为不存在的内容。因此违反了外键。
答案 2 :(得分:0)
它似乎是关于你的数据库,而不是你的nHibernate代码,检查日志文件中的SQL,并尝试执行它
答案 3 :(得分:0)
在我的情况下,我在类型为DateTime的列中添加数据,
我插入2001/2/2
得到此错误,但是当插入更合理的时间i = i + 1
获得成功时,
所以问题可能在于您的数据,并且应遵循数据库中的某些规则。
答案 4 :(得分:0)
要查找实际原因,您需要查看nHibernate生成的SQL。您可以使用nHibernate日志或nHibernate profiler来获取这些SQL。与上述错误消息相关的常见问题很少,包括:
答案 5 :(得分:0)
可能不是它的NHibernate问题! 请在数据库中检查哪一列不是Null / Null。为此,我将这些列设置为空。 你什么都可以做!在表格的这些列上插入或设置为null时设置值。