我正在寻找解决这个问题的正确方向。
我正在从ui传递一个对象。
其中一个值是外键(允许空值的int)。发送的值为-1,表示该值尚未由用户设置。
如何将此对象写入db,将外键设置为空值。
我正在使用NHibernate进行映射。
另外,这是一个好习惯吗?或者我最好设置一个默认值来重新开始。
任何帮助都非常感激。
答案 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的了解并不了解。