NHibernate应该总是写NULL而不是空字符串

时间:2012-03-22 08:32:34

标签: c# sql-server nhibernate nhibernate-3

我将NHibernate 3与Microsoft SQL Server数据库(2005及更高版本)一起使用。 现在,我正在寻找一种方法告诉NHibernate将NULL始终写入数据库而不是空字符串。 最好的方法是什么? - 或者NHibernate中是否有转换来执行此操作? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以添加PreInsertEventListener并覆盖该函数以将空字符串转换为NULL值。

解决这个问题的方法是:

 public class NhibernateEventListeners :  IPreInsertEventListener
    {
         public bool OnPreInsert(PreInsertEvent nHibernateEvent)
        {
            var entityBeingInserted = nHibernateEvent.Entity;
            if (entityBeingInserted == null)
                return false;
             if (property.PropertyType==typeof(string))
                 {
                    //use reflection to set the property value to null   
                 }
            return false;
        }
   }

并在设置sessionfactory时确保将以下内容添加到配置中

_config.ExposeConfiguration(
                        config => config.SetListener(ListenerType.PreInsert, new NhibernateEventListeners()));

希望这是你正在寻找并帮助你的。