問題タブ [navigation-properties]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2996 参照

entity-framework-4 - 最初にエンティティ フレームワーク コードでナビゲーション プロパティを使用する

環境:

  • Code First、Entity Framework 4.3.1。
  • ユーザー ---- トピック、1対多の関係。
  • Userwith public virtual ICollection<Topic> CreatedTopicsNavigation プロパティ (遅延読み込み);
  • Topicpublic virtual User Creatorナビゲーション プロパティを使用。
  • DataServiceController : DbDataController<DefaultDbContext>、Web API ベータ版、ASP.NET MVC 4 ベータ版、シングル ページ アプリケーション。
  • Json シリアライゼーション用の System.Json。
  • Web API アクション:

    /li>
  • 結果: 「未処理の Microsoft .net フレームワーク例外が w3wp.exe で発生しました」

ここでの問題は次のように思われます:両方のエンティティにナビゲーション プロパティを追加CreatedTopicsするべきではありません (循環参照が原因ですか?)。また、クラスのナビゲーション プロパティを削除すると、User再び OK になります。

したがって、上記のような同様のコンテキストで、ここに私の質問があります:

  1. 1 対多の関係でナビゲーション プロパティを処理する方法。
  2. さらに、多対多の関係はどうですか。それを 2 つの1 対多の関係に分割する必要がありますか。
  3. ナビゲーション プロパティを使用する際のベスト プラクティスと注意事項は何ですか?

私は多くの関連記事を読みましたが、まだ十分に明確ではありません:(、

助けてくれてありがとう!

ディーン

0 投票する
1 に答える
358 参照

c# - EF でナビゲーション プロパティの親テーブルを参照する

私は基本的にFKを持つ3つのテーブルを持っています

作る

  • MakeId
  • MakeName

モデル

  • モデル ID
  • モデル名
  • MakeId (外部キー)

車両

  • 車両 ID
  • 購入日
  • モデル ID (外部キー)

データベースを変更せずに、Vehicle から Make へのナビゲーション プロパティが欲しい

私は試した:

ただし、これを行ったときに例外を受け取りました。

プロパティ式 'd => d.Model.MakeId' は無効です。式はプロパティを表す必要があります: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'. 複数のプロパティを指定する場合は、匿名型を使用します: C#: 't => new { t.MyProperty1, t.MyProperty2 }' VB.Net: 'Function(t) New From { t.MyProperty1, t.MyProperty2 }'.

データベースに Vehicle.ModelId 列を追加せずに Make & Vehicle テーブルにナビゲーション プロパティを作成するにはどうすればよいですか?

0 投票する
1 に答える
136 参照

c# - datetime がナビゲーション プロパティの読み込みを妨げるのはなぜですか?

SQL Server 2012 データベースに対して DbContext POCO アプローチを使用して、Entity Framework 4.3.1 を使用しています。

データベースには 2 つのテーブルしかなく、次のようになります。

テーブル

注: データベースには外部キーがまったく指定されていません。モデルで関係を強制しているだけです (データベースを変更することはできません)。

それぞれに、次のような 1 行のデータがあります。

データ

結合が機能することを確認するために、次のクエリを実行しました。

検証

現在、次のエンティティがあります。

そして、これはコンテキストです:

このコードを実行するWhy is this printed?と、コンソールに出力されます。ナビゲーション プロパティを入力する必要があることがわかります (明示的に含めていることもあります)。

さて、これは本当に奇妙なビットです。クラスDeliveryDateからプロパティをコメントアウトするだけで、正常に機能します(コンソールに出力されます)。OneThis is what I expect

ここで何が問題で、どうすれば解決できますか?

注:変数のDeliveryDateプロパティを見るoneと、期待値に正しく設定されているため、日付はデータベースで問題なく、エンティティ フレームワークはそれを完全に具現化できます。

詳細情報: 日付であるという事実は問題ではありません - もしそうであれば、nvarchar はまだ失敗します - 単純なプロパティがすべてを失敗させるようです - これは私にはバグのように感じます...

0 投票する
1 に答える
1121 参照

entity-framework - EF Code First - 別のテーブルを指す複数のプロパティ

EF 4.1 の Code First でデータベースを生成する単純なクラスのペアがあります。

私のプログラムでは、いくつかのデータを作成して書き込みます。

Purchase レコードを読み返すと、 purchase.User が null であるという例外が発生することに注意してください。つまり、.Include はユーザーに対して何も取得しませんでした。ここで、OnModelCreating の salespersonUser ナビゲーション プロパティを無視すると (または単にコメントアウトすると):

コードは機能し、User は .Include にロードされます。

SalespersonUser nav プロパティを無視すると、作成されたデータベースは期待どおりに見えます。Purchase テーブルには PurchaseId、UserId、および SalespersonId があります。しかし、SalespersonUser nav プロパティを再度追加すると (無視しないでください)、テーブルには User_UserId と SalespersonUser_UserId (および元の UserId と SalespersonUserId) の 2 つのキーが追加されます。

また、生成された SQL は、問題が発生した場所を明確に示しています。

nav プロパティなし:

そして nav プロパティを使って:

UserId をプルする方法に注目してください。ただし、User_UserId と結合し、左結合も同様です。SalespersonUserId は結合でも参照されません。レコードを書き込んだ後のデータベース内では、UserId が設定されていますが、User_UserID は null です。したがって、参加するものはなく、Included User に対して null を取得します。

これは EF のバグのように思えますが、設計上の理由がある可能性があります。もしそうなら、誰かが私のためにそれを片付けて、おそらくそれを回避するかもしれないいくつかの流暢なAPIについて説明できますか? 私は自分のナビゲーション プロパティに少し偏っています。

0 投票する
2 に答える
436 参照

c# - Entity Framework-ナビゲーションプロパティが選択されるのはなぜですか?

私は次のようなベースリポジトリを持っています:

  1. User user = _usersRepository.Get().SingleOrDefault(u => u.Username == "gigi"); これにより、Rolesプロパティのないユーザーが返されます。これは問題ありません。

  2. User user = _usersRepository.Get(new string[] { "Roles" }).SingleOrDefault(u => u.Username == "gigi");これにより、ユーザーとRolesプロパティが返されます。これは問題ありません。

  3. List<User> users = _usersRepository.Get().Where(u => u.Username.StartsWith("gi")).ToList();

  4. List<User> users = _usersRepository.Get(new string[] { "Roles" }).Where(u => u.Username.StartsWith("gi")).ToList();

クエリ3と4はどちらも、Rolesプロパティを持つユーザーのリストを返します。クエリ3がロールを返すのはなぜですか?

LE:これは呼び出しです。コンテキストが破棄された後、ユーザーコレクションを調べます。

LE2:私は同じことを別々に行いました:

  1. /li>
  2. /li>

最初のケースではロールがロードされていませんが、2番目のケースでは問題ありません。

リポジトリのサンプルで何が間違っているのかわかりません。

LE3:これは作業単位です

0 投票する
2 に答える
3801 参照

entity-framework-5 - OnModelCreating のプロパティを無視する

Entity Framework 5.0 で Bounded (Db) Contexts を使用しようとしていますが、特定のコンテキストに含まれるクラスの 1 つからプロパティを除外する際に問題が発生しています。ここに情報があります(簡潔にするために短くします)

BaseContext.cs

IContext.cs

ISuiteContext.cs

SuiteContext.cs

Organizations.cs:

OrganizationConfiguration.cs:

使い方 (Web API Test Proj)

そして発生している例外:

ナビゲーション プロパティ 'Colors' は、タイプ 'Organizations' で宣言されたプロパティ タイプではありません。モデルから除外されていないこと、および有効なナビゲーション プロパティであることを確認してください

私が望むのは、「SuiteContext」が組織にアクセスできるようにすることだけですが、子 (色、およびその他のいくつか) にはアクセスできません。

私は何が欠けていますか?おそらく私は例外を間違って解釈していますか?


更新 #1

私は試しました(成功せずに-同じ例外):

アップデート #2

OrganizationsConfiguration.csクラスとHasMany()メソッドに関係があるようです。を取り出すとHasMany(o => o.Colors)、意図したとおりにクラス/プロパティを無視できます。ただし、これにより、データベースの作成が再作成時に失敗することもあります。もし私がそうしなかったらのろわれた!

0 投票する
1 に答える
108 参照

entity-framework - ナビゲーションプロパティをADO.NETEntityFrameworkに保存する

私はADO.NETEntityFrameworkを使用しています。次のコードを使用して、データベースに「User」エンティティを追加します。

'user'クラスのCF属性は、'people'クラス属性への外部キーです。データベーステーブル'people'には、CF='xyz'のレコードがあります。メソッド'dbEntity.SaveChanges();'の場合 が実行されると、「user」データベーステーブルに新しいレコードが問題なく作成されます。問題は、「dbEntity.SaveChanges();」の実行後でも、ナビゲーションプロパティ「new_user.people」が「null」であるということです。正常ですか?

ありがとう!

0 投票する
1 に答える
1827 参照

asp.net-mvc - linq の ef ナビゲーション プロパティをエンティティに結合する方法

Linq to Entities で記述された次の SQL を取得しようとしています。

これがLinqでの私の試みです:

SheetCollection モデル:

私の図は次のようになります。

ここに画像の説明を入力

ナビゲーション プロパティと同等に機能しないことは理解しています。しかし、これを正しい方法で行うにはどうすればよいでしょうか。

0 投票する
1 に答える
1045 参照

entity-framework - EntityFrameworkPOCO-ナビゲーションプロパティが更新されない

EF4のpocoクラスに問題があります。

顧客エンティティへの外部キーを含む注文エンティティがあります。

したがって、OrderクラスにはCustomerタイプのナビゲーションプロパティがあります。

それはこのように見えます:

注文をロードすると、ナビゲーションプロパティの顧客は正しいのですが、CustomerIdプロパティが変更された場合、ナビゲーションプロパティは新しい顧客で更新されません。

EFコンテキストでDetectChanges()メソッドを呼び出すと、ナビゲーションプロパティが更新されます。

すべてのプロパティが仮想としてマークされていることを読みましたが、関係の同期は自動的に行われますが、ここではそうではありません。

どこで私は間違えましたか ?

助けてくれてありがとう

0 投票する
1 に答える
119 参照

.net - .NET Entity Framework ナビゲーション プロパティを追加する方法

受信者とメーリングリストの間で多対多の関係を持つエンティティフレームワークを使用してデータベースモデルを作成しました。データベースを生成したとき、リンクテーブルへのアクセスは許可されませんでしたが、受信者のプロパティ-recipient.mailingListへのアクセスのみが許可されました。新しい受信者をデータベースに追加しようとして、新しい受信者を作成し、すべてのプロパティを正しく追加しました。チェックして動作しました。しかし、MailingList を Recipient に追加すると、「English translation: An entity object cannot be reference by multiple instances of IEntityChangeTracker.」というエラーが表示されました。以下のように MailingList を追加しました。

エラーの前に、newRecipient に mailingLists が追加されていることがわかります。MailingList を割り当てようとする前に、プログラムは問題なく newRecipient を追加しました。受信者にメーリング リストを追加する方法を誰か教えてもらえますか?