2016-07-14 10 views
0

Why do navigation properties have to be public for a proxy to be created?によれば、ナビゲーションプロパティは内部仮想で保護され、パブリック仮想である必要はなく、Entity Frameworkは依然としてプロキシを提供します。私は明らかにしていマッピングでナビゲーションプロパティを内部仮想で保護することはできますか?

protected internal virtual ICollection<MyEntityType> MyNavigationCollection { get; set; } 

: 私はこのようなナビゲーションプロパティをプログラムした

.WithMany(t => t.MyNavigationCollection) 

これは私が参照記事に沿ったものであるように思われます。問題は、MyNavigationCollectionの保護された内部仮想に表示を変更したため、所有オブジェクトを照会するときにEntity FrameworkがプロキシコレクションのインスタンスをMyNavigationCollectionに割り当てることがなくなっていることです。

アクセス保護された内部仮想を持つコレクションに対して、プロキシオブジェクトを使用するためにEntity Frameworkを使用するには、どうしたらよいですか?

答えて

0

プロップは内部ではありません。エンティティフレームワークコードに内部マークが付いている場合は、エンティティフレームワークコードにアクセスできません。内部を取り外すとうまくいくはずです。

プロキシはアセンブリであらかじめ定義されていないため、内部は機能しません。

内部アイテムはアセンブリを含むアセンブリでのみ表示され、EFコードはアセンブリの外部にあり、プロキシはそれにアクセスできず、プロキシはクラスを継承しているため保護されたアイテムに対して完全な可視性を持ちます。プロキシで保護されたメンバーを表示させます。

+0

本当ですか?保護された内部の意味は保護されたものと内部のものの両方を意味します。なぜ内部からの可視性を広げてEntity Frameworkに見えにくくするのでしょうか? –

+0

内部アイテムは、それらを含むアセンブリでのみ表示され、EFコードはアセンブリの外部にあり、プロキシはそれにアクセスできません。プロキシは、保護されたアイテムをクラスを継承しているため、プロキシに表示されるメンバー。 –

+0

あなたの参照したコメントにもこれが説明されています。内部は単純に機能しません。保護されています。 –

関連する問題