将INT列设置为空
问题描述:
我正在寻找在正确的方向,以解决这个问题的一个点。将INT列设置为空
我正在从UI传递一个对象。
其中一个值是外键(允许为空的int)。正在发送的值是-1,表示该值尚未由用户设置。
如何将这个对象写入数据库将外键设置为空值。
我使用NHibernate与流畅的映射。
而且,这是很好的做法?或者我更好地设置一个默认值来回溯。
任何帮助非常感谢。
答
伪代码:
class Entity {
public int Id {get; private set;}
public int? NullableValue {get;set;}
}
...
if (valueReceived == -1)
entity.NullableValue = null;
...
session.Update(entity);
答
我想首先要检查的是给予数据库中该列的默认值-1。
令人遗憾的是,我不太了解NHibernate在那里寻找什么。
答
没有看到你的地图文件更具体,我首先建议可空()字段添加到您的映射的参考:
// nullable
Reference(x => x.ReferencedEntity).Nullable();
那么我相信让你的公共对象使用可空类型:
public virtual int? ForeignKeyFieldId { get; set; }
最后,我想你的-1转换为n只要UI交出你的对象。有周围具有误导性的数据的实体旅行,如果能避免这毫无意义。
,仅仅更新之后应该可以正常工作。
+0
谢谢。这将是方便的知识,因为我打算更多地使用流利。在这个场合,虽然我决定去分配一个默认的键。 – user17510 2009-09-18 00:09:56
能够看到你的地图文件可能是有用的。 – ddc0660 2009-09-17 19:11:21
为什么使用带int的“int”而不是可空的“int?”空分配? – 2009-09-18 07:53:07