2012-03-22 10 views
0

私はMicrosoft SQL Serverデータベース(2005年以降)でNHibernate 3を使用します。 今、私は空の文字列の代わりにデータベースに常にNULLを書き込むようにNHibernateに指示する方法を探しています。 これを行うにはどうすればよいでしょうか? - あるいはこれを行うためにNHibernateにおそらくスイッチがありますか? ご協力いただきありがとうございます。NHibernateは空の文字列の代わりに常にNULLを書くべきです

+3

check http://stackoverflow.com/questions/2592556/how-to-have-nhibernate-persist-a-string-empty-property-value-as-nullまたhttp://stackoverflow.com/questions/1187841/mapping-empty-strings-to-null-in-nhibernate – V4Vendetta

+0

こんにちは。あなたのリンクをありがとう。私は質問があります:彼らはFluentで働いているのを見ました。私はhbmマッピングで作業します。これはhbmマッピングでも動作しますか? – BennoDual

+1

hbmマッピングでもカスタムIUserTypeを使用できます。例 ' Nikolay

答えて

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

希望を以下を追加してください:

このことについて移動するための方法は次のようになりますあなたを助けます。

関連する問題