2009-07-22 8 views
1

子プロパティに値が割り当てられていないコンポーネントも、データベースから取得するとnullに設定されます。挿入時のNHibernateコンポーネントnot-nullプロパティ

これは気にしません。コンポーネントがnullかどうかを確認するだけです。しかし、そのオブジェクトをデータベースに更新または挿入しようとすると、エラーが発生します。

"non-nullプロパティはnullまたは一時的な[完全なプロパティ名]を参照しています"私にはNULLが渡されますが、それ自体は受け入れられません。

いくつかのマッピングオプションがありますか?これをオーバーライドするには欠けていますか、またはデータベースに更新または挿入する前にコンポーネントを値に設定する必要がありますか?

おかげ

答えて

3

すべてのプロパティがnull要素である場合は、あなたが書くとき、それは正常な動作です、それ自身nullです。

パブリックセッターで自動プロパティを使用している場合は、この種の問題が発生する可能性があります。

あなたはこの持っている場合:

public virtual MyComponent MyComponentObject { get; set; } 

あなたの代わりにこれを実行する必要があります:

private MyComponent _myComponent; 
    public virtual MyComponent MyComponentObject 
    { 
     get 
     { 
      if (ReferenceEquals(null, _myComponent)) 
      { 
       _myComponent= new MyComponent(); 
      } 
      return _myComponent; 
     } 
     set 
     { 
      _myComponent = value; 
     } 
    } 

HTH、

クリス-I、

+0

をいや、私は私が推測します。それが私の頭に入ることさえできなければ、自動プロパティは本当に私を怠惰にしています! ありがとう –

+0

私が知っているなら、それは私も怠け者だからです。数週間前に同じ問題が発生しました;-) –

+1

NHibernateはnullに設定されたコンポーネントのプロパティでしたそれが返ってきたときはいつでも、エラーはそのコンポーネントの1つではなくコンポーネントについて不平を言っていました。この質問を横断して実行する他の人のためにこれを言いました。 –

関連する問題