当列可以为空时,流畅的nHibernate映射是否

时间:2012-03-09 14:03:27

标签: c# nhibernate fluent-nhibernate

我正在使用流畅的nHibernate将数据库标志列“Y”/“N”映射到bool属性:

Map(x => x.Enabled).Column("ENABLED_FLAG").CustomType("YesNo");

问题是,如何指定如何映射null?将null映射到true,false,exception?

更新

默认设置似乎将NULL映射为false。我喜欢这样,但仍然想知道我怎么能覆盖它才是真的?

2 个答案:

答案 0 :(得分:2)

如果要允许空值,请创建字段bool?,它也将在数据库中为空。

答案 1 :(得分:1)

如果要更改null case的功能,则必须创建自己的自定义类型 - 主要来自IUserType。

我做了类似于日期的事情(其中0-01日期01-01-0001不能保存到mssql)和Guids我们要插入null而不是Guid.Empty)

创建自己的用户类型可以覆盖NullSafeSet和NullSafeGet方法 - 这就是你想要做的(在读或写时改变Null的处理) 您甚至可以从原始的YesNo Type

继承

一个很好的例子 http://lostechies.com/rayhouston/2008/03/23/mapping-strings-to-booleans-using-nhibernate-s-iusertype/