2011-08-13 4 views
0

私はasp.net mvcアプリケーションでエンティティフレームワークを使用していますが、私はデータベースファーストアプローチを使用しています。あなたが見ることができるように、また、CBへのナビゲーションプロパティがあり部分クラスからgetメソッドにフックする際にEFナビゲーションプロパティがロードされない

public partial class CA 
{ 
    private string _PropX; 
    partial void OnGetPropX(ref string value); 
    public string PropX 
    { 
     get 
     { 
      string value= _PropX; 
      this.OnGetPropX(ref value); 
      return value; 
     } 
     set 
     { 
      this._PropX= value; 
     } 
    } 

    public virtual CB B { get; set; } 
} 

:私は少しはこのように私のエンティティのプロパティのgetメソッドにフックすることができるようにEDMXからコード生成をカスタマイズしました。私の非生成された部分クラスAではPropXは、このようなCBのプロパティを返すようにするために、私はgetメソッドにフック:

public partial class CA 
{ 
    partial void OnGetPropX(ref string value) 
    { 
     if(String.IsNullOrEmpty(value)) 
      value= this.B.PropY; // Error 
    } 
} 

しかし、それはthis.Bは常に//でマークされた行のnull判明エラー。しかし 、以下、すべてがうまく働くように私は、私の非生成された部分クラスのCAに新しいプロパティを作成する場合:

public string MyPropX 
{ 
    get 
    { 
     return (String.IsNullOrEmpty(this.PropX) ? this.B.PropY: this.PropX); 
    } 
} 

誰も私にこの動作を説明し、おそらく取得する方法を教えてもらえます最初に働く方法は?ありがとう!

答えて

0

ランダム推測...おそらく適切にプロキシを作成するから非仮想防止のEFであるためにあなたのプロパティを変更するには...代わりにpublic virtual string PropXをやってみてください...

+0

おかげで、それを試してみましたが、残念ながらそれはそれではなかったです。 – EPLKleijntjens

+0

仮想はナビゲーションプロパティーにのみ必要です。 – niaher

関連する問題