Entity Frameworkのナビゲーションプロパティとは何ですか?

.net entity-framework

質問

私は自分のEFダイアグラムでこれらのナビゲーションプロパティをたくさん見ているが、それらが本当に何のためにあるのかわからない。私のテーブルの多くに見られるように、私はaspnet_Usersプロパティを持っています。

これらは何のためにありますか?彼らは参加に役立ちますか?または何?

Error 2
Error 3007: Problem in Mapping Fragments starting at lines 1201, 1423: 
Non-Primary-Key column(s) [Field2] are being mapped in both fragments 
to different conceptual side properties - data inconsistency is possible 
because the corresponding conceptual side properties can be independently 
modified.

受け入れられた回答

ナビゲーションプロパティを使用すると、1つのエンティティから「接続されている」エンティティにナビゲートすることができます。

たとえば、ユーザーがロールに接続している場合は、[ロール]ナビゲーションを使用して、そのユーザーに関連付けられているロールを読んで調べることができます。

編集:

ユーザーにLINQ-to-Entitiesをロードし、その「Role」ナビゲーションプロパティも確認する場合は、LINQクエリに明示的に「Role」エンティティを含める必要があります。EFはこれらのナビゲーションプロパティを自動的にはロードしません

  // load user no. 4 from database
   User myUser = from u in Users.Include("Role")
                 where u.ID = 4
                 select u;

   // look at the role the user has
   string roleName = myUser.Role.Name;

または:

   // load user no. 4 from database
   User myUser = from u in Users
                 where u.ID = 4
                 select u;

   // check to see if RoleReference is loaded, and if not, load it
   if(!myUser.RoleReference.IsLoaded)
   {
      myUser.RoleReference.Load();
      // now, the myUser.Role navigation property should be loaded and available
   }

   // look at the role the user has
   string roleName = myUser.Role.Name;

これは基本的に、データベース内の外部キー関係、つまり2つのオブジェクト間の接続とプログラム的に同等です。これは基本的に2つのテーブル(またはEFでは2つのエンティティ)間の結合を「隠す」か解決します。

マーク



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ