将DB中的int列设置为null

时间:2009-09-17 10:28:34

标签: .net nhibernate fluent-nhibernate

我正在寻找解决这个问题的正确方向。

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

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

如何将此对象写入db,将外键设置为空值。

我正在使用NHibernate进行映射。

另外,这是一个好习惯吗?或者我最好设置一个默认值来重新开始。

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:2)

伪代码:

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

答案 1 :(得分:1)

如果没有看到您的地图文件更具体,我首先建议将Nullable()字段添加到您的映射引用:

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

然后我相信让你的共同对象使用可以为空的类型:

public virtual int? ForeignKeyFieldId { get; set; }

最后,只要UI移交您的对象,我就会将您的-1转换为null。如果可以避免,实体就会误导数据,这是毫无意义的。

之后,简单的更新应该可以正常工作。

答案 2 :(得分:-2)

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

可悲的是,我对NHibernate的了解并不了解。