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

本文关键字:nHibernate 是否 映射 null | 更新日期: 2023-09-27 18:27:19

我正在使用fluent nHibernate将数据库标志列"Y"/"N"映射到bool属性:

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

问题是,如何指定如何映射null?null会被映射到true、false、exception吗?

更新

默认设置似乎将NULL映射为false。我喜欢这一点,但仍然想知道我如何才能推翻这一点?

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

如果您想允许null,请将字段设为bool?,它在数据库中也将为null。

如果您想更改null case的功能,您必须创建自己的自定义类型-本质上是从IUserType派生的。

我已经在日期上做了类似的事情(其中01-01-0001的0日期无法保存到mssql),在Guids上我们想插入null而不是Guid.Empty)

创建自己的用户类型可以覆盖NullSafeSet和NullSafeGet方法,这正是您想要做的(在读取或写入时更改对Nulls的处理)您甚至可以继承原来的YesNo Type

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