当ID<时,NHibernate写入值= NULL 0

时间:2011-02-27 09:27:38

标签: c# nhibernate fluent-nhibernate null

我们希望实现一个简单的规则,当实体的ID等于-1时,NHibernate将为数据库分配(持久)NULL。例如,我们有一个“in system”帐户,应该作为NULL保存到数据库。

如果我们尝试将ID保存为-1到数据库,我们会得到一个外键异常,因为外表中不存在该ID。

我们正在使用NHibernate和FluentNhibernate。

1 个答案:

答案 0 :(得分:1)

我认为你的实体没有正确的映射。如果它是正确的,你应该做出任何诀窍:你不应该看到一个ID,而是对另一个实体的引用,在这种情况下,你将使用null值保持引用。即使在错误的情况下,如果此id可以为空,您希望将实体映射为表示为ID的引用(这几乎总是错误的),将其映射为可空,以便您拥有int?你可以将null调整为null,而不是-1技巧。

参见评论

如果自定义实体在内部用作空值,则会话拦截器可以帮助:处理OnSave并通过将虚拟实体替换为null来处理特殊情况。 Here you can find the documentation关于NH拦截器。 在相同文档的11.2个章节中,有与事件相关的部分,这类问题的等价物。