2009-09-17 102 views
0

我正在寻找在正确的方向,以解决这个问题的一个点。将INT列设置为空

我正在从UI传递一个对象。

其中一个值是外键(允许为空的int)。正在发送的值是-1,表示该值尚未由用户设置。

如何将这个对象写入数据库将外键设置为空值。

我使用NHibernate与流畅的映射。

而且,这是很好的做法?或者我更好地设置一个默认值来回溯。

任何帮助非常感谢。

+0

能够看到你的地图文件可能是有用的。 – ddc0660 2009-09-17 19:11:21

+1

为什么使用带int的“int”而不是可空的“int?”空分配? – 2009-09-18 07:53:07

回答

2

伪代码:

class Entity { 
    public int Id {get; private set;} 
    public int? NullableValue {get;set;} 
} 
... 
if (valueReceived == -1) 
    entity.NullableValue = null; 
... 
session.Update(entity); 
-2

我想首先要检查的是给予数据库中该列的默认值-1。

令人遗憾的是,我不太了解NHibernate在那里寻找什么。

1

没有看到你的地图文件更具体,我首先建议可空()字段添加到您的映射的参考:

// nullable 
Reference(x => x.ReferencedEntity).Nullable(); 

那么我相信让你的公共对象使用可空类型:

public virtual int? ForeignKeyFieldId { get; set; } 

最后,我想你的-1转换为n只要UI交出你的对象。有周围具有误导性的数据的实体旅行,如果能避免这毫无意义。

,仅仅更新之后应该可以正常工作。

+0

谢谢。这将是方便的知识,因为我打算更多地使用流利。在这个场合,虽然我决定去分配一个默认的键。 – user17510 2009-09-18 00:09:56