NHibernate всегда должен писать NULL вместо пустой строки - PullRequest
0 голосов
/ 22 марта 2012

Я использую NHibernate 3 с базой данных Microsoft SQL Server (2005 и выше). Теперь я ищу способ сказать NHibernate писать всегда NULL в базу данных вместо пустых строк. Каков был бы лучший способ сделать это? - Или в NHibernate есть переключатель для этого? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 22 марта 2012

Вы можете добавить 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;
        }
   }

, и при настройке сеанса убедитесь, что вы добавили следующее в свою конфигурацию

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

Надеюсь, что этоэто то, что вы ищете и вам помогает.

...