0

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

4

1 回答 1

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()));

希望这是您正在寻找的并可以帮助您。

于 2012-03-22T14:13:52.127 回答