問題タブ [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 に答える
686 参照

asp.net-mvc-3 - MVC3ナビゲーションプロパティの属性とクライアント側の検証

私はMVC3への最初の暫定的なステップを実行していますが、モデル内のナビゲーションプロパティをビューに変換する際に問題が発生しました。ビューのナビゲーションプロパティでは、クライアント側の検証が許可されておらず、「表示」ラベル属性も取得されていないようです。

私は次の単純なモデルを持っています:

このモデルを参照するもの:

このモデルの読み取り/書き込みアクションとビューを使用してコントローラーを作成すると、次の作成フォームが表示されます。

これは、[エンティティタイプ]ドロップダウンのラベルを除けば問題ありません。何らかの理由で、モデル内のナビゲーションプロパティの[表示]属性を取得していません(スペースが不足していることに注意してください)。また、プロパティを「必須」属性で装飾しているにもかかわらず、クライアント側の検証がドロップダウンリストに対して有効になっていません(サーバー側の検証は問題なく機能します)。クライアント側の検証は、他のフィールドで機能します。必要なすべての.jsスクリプトファイルが含まれていることに注意してください。また、関連する有効化検証キーをweb.configに追加しました。

私がここで見逃しているアイデアはありますか?みんなありがとう。

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

c# - Navigation プロパティ null Entity Framework 4.3.1 で

Entity Framework 4.3.1を使用していますが、ナビゲーション プロパティに問題があります。

私のコンテキストでは、遅延読み込みを有効にしました。

また、プロパティを仮想にしました (実際にはモデルから生成しました):

これはライドと呼ばれるエンティティにあります。ただし、アクセスmyContext.Ride.Driverするとnullです。実行時に Ride エンティティを検査すると、外部キーが予想されるドライバーの ID で実際に満たされていることがわかるため、これは奇妙です。

他に何かする必要がありますか?

新しい Ride を生成するときにDriverIDを設定しましたが、その後、ID を取得した Driver が Navigation プロパティとして自動的に追加されません。


さて、私はそれを自分で解決したので、答えを共有します: Driver エンティティをコンテキストに戻す必要がありました。myContext.Driver.Attach(ドライバー)。次に、Ride.DriverID = Driver.DriverID の代わりに Ride.Driver = Driver を実行します。

コードで私はこれをやっています:

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

asp.net-mvc-3 - EntityFrameworkでエンティティのナビゲーションプロパティを更新する方法

EntityFrameworkを使用するASP.NETMVC 3には、次のように、別のオブジェクトを参照するナビゲーションプロパティを持つドメインオブジェクトがあります。

Personのインスタンスを作成してデータベースに追加しようとすると、DBContextはこのエンティティ「Person」のキャッシュを保持してデータベースに送信します。したがって、同じコンテキストインスタンスの存続期間の後半で、このエンティティにアクセスしようとすると、ナビゲーションプロパティが更新されないため、Companyフィールドは常にnullになります。

データベースに存在するものでナビゲーションプロパティを更新する方法はありますか?

遅延読み込みがオンになっています。

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

c# - Navigationプロパティを使用してデータを取得する

Entity Frameworkを使用してアプリを作成しています。データベースからデータベースモデルをロードしました。CourseテーブルにDepartmentは、外部キーがあります。グリッドビューを作成し、そのデータソースをコーステーブルに設定しましたが、代わりに表示したいです。 .Navigationプロパティを次のように使用できますが、navigationプロパティを使用してDepartment Tableからデータ(Department name)を取得するにはどうすればよいですか。これで私を助けることができる人は誰でもこれは私のコードですNavigation PropertyDepartmentIDDeaptment Namedepartment IDDepartment.count

First関数を使用しないと、部門名属性にアクセスできません。First()を使用すると、次のようになります。

どうすれば解決できるか教えてください。

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

c# - EF4.3.1LinqToEntitiesクエリに継承されたナビゲーションプロパティを含める

コードファーストアプローチと流暢な構成を使用して、EF4.3.1で単純な継承シナリオをセットアップしようとしています。

1対1のナビゲーションプロパティを持つ抽象基本タイプ「A」を作成しました。また、1対1のナビゲーションプロパティを持つ継承されたクラス「AA」は次のとおりです。

最初のレベルのナビゲーションプロパティを使用してデータを取り戻そうとすると、期待どおりに機能します。

しかし、次のように継承されたタイプのナビゲーションプロパティを含めようとすると:

実行時にEntityCommandCompilationExceptionが発生し、次の内部例外メッセージが表示されます。

指定された式のResultTypeは、必要なタイプと互換性がありません。式ResultTypeは'Transient.reference[... A]'ですが、必要なタイプは' Transient.reference[...AA]'です。パラメータ名:arguments [0]

誰かが同様の問題に遭遇しましたか?

おそらく何かが足りないのですが、このサンプルの何が問題なのかわかりません。

モデルを期待どおりに機能させるにはどうすればよいですか?

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

c# - ナビゲーションプロパティが存在しない場合は挿入し、キーなしで存在する場合はそれを使用します

私は2つのテーブルを持っています:

注文のリストを挿入する注文テーブルに(EFを使用して)挿入したい(すべて同じ人で、私は人の名前しか知らない)、その人が人のテーブルに存在しない場合は、彼はそれに挿入され、彼は存在します。注文には適切な人が入力されます。冗長な呼び出しであるため、最初にその人がpersonテーブルにあるかどうかを照会したくありません。変更の保存中にのみ追加し、事前にサーバーにクエリを実行する可能性はありますか?そんな感じ:

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

foreign-key-relationship - ナビゲーションプロパティを再帰的に含める方法

2つのデータベースがあり、それぞれに対応するEntityFramework DBコンテキストがあり、Entity Framework 5、Code-Firstを使用しています。

次のようなテーブルがあります。

Foo次に、FooBarDatabase1DbContextBar内にエンティティがありDatabase2DbContextます。

FooParent(タイプのFoo)、Children(タイプのICollection<Foo>)およびBar(タイプの)ナビゲーションプロパティがありBarます。 (タイプの)および(タイプの)FooBarナビゲーションプロパティがあります。FooFooBarBar

さて、私が欲しいのは、すべてのとのすべてにロードされる.Include(foo => foo.Bar)ようにできることです。BarParentChildrenFoo

混乱しすぎていないことを願っています。

BarPS:ナビゲーションプロパティは別のデータベースにあるため、設定で問題が発生することはわかっています。いくつかの関連する回答で、ビューまたは同義語のいずれかを示唆する提案を見ました。私の状況のその側面も考慮に入れているどんな答えも大いに感謝されるでしょう。

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

c# - Entity Framework によるプロジェクション

Entity Framework を使用したプロジェクションの作成について質問があります。

Profile、Biography、BiographyTranslation の 3 つのテーブルがあります。

次の投影を行いたい: (伝記 = IQueryable)

私の問題: OwnerId は正しく投影されますが、翻訳の数は常に 0 です。

プロジェクションはコレクション プロパティでは機能しませんか?

biographies.Inlcude("Translations") も試してみましたが、結果は同じでした。

アップデート

ここにある小さなテストプロジェクトを作成しました:

TestProject.zip

3 つのテーブル (create および insert ステートメントを含む)、EDMX ファイル、および伝記をロードするためのクラスのみです。コレクション ナビゲーション プロパティを投影するためにまだ動作させることができません。単純なナビゲーション プロパティは正常に動作します。多分誰かがテストプロジェクトから私が間違っていることを見ることができます....

アップデート

私は新しいアプローチを試みましたが、まだ運がありません:

アップデート

匿名型を使用すると、驚くほど機能します...

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

entity-framework-4 - Entity Framework 4.3 のフィルターを使用してナビゲーション プロパティを読み込む

数日前、2 つのクラスのマッピングとEF の使用に関する質問をしました。マッピングは順調に進んでいますが、オブジェクトに関連付けるクラスのナビゲーション プロパティでいくつかの問題に直面しています。1 人のユーザーのみのメッセージを読み込んでおり、そのユーザーのみに関連するステータスが必要です。ユーザーがメッセージを既読/未読としてマークしたかどうか、およびいつマークしたかを表示したいと思います。次のようなデフォルトの読み込みメカニズムを使用すると、ユーザーに関係なく、メッセージに関連するすべての履歴が読み込まれます。MessageMessageStatusHistoryStatusHistoryMessageMessageStatusHistory

1人のユーザーのみの履歴をフィルタリングするには、次のトリックを試しました:

エラーが発生しています:

私もコメントしてみましたStatusHistory = m.StatusHistory.Where(x => x.UserId == userId).ToList()が、助けにはなりませんでした。

フィルタリングされた StatusHistory でメッセージを取得するのを手伝ってください。

編集:-上記はこのコードで解決されます:

しかし、メッセージへの返信を含めようとすると:

q.ToList()for を使用してクエリをリストに変換するとエラーが発生しますHistories = m.Histories.Where(x=> x.SenderId == userId).ToList()

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

entity-framework - Entity Framework 既存オブジェクトの更新

データベースに行を追加しましたが、更新するために別のコンテキストで戻ってきました。私はこのクラスを持っています:

C は EntityObject かもしれませんが、このクラスはそれを知りません。

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

等々...

私のテスト ケースでは、TryGetObjectStateEntry で stateEntry が見つかりません。ただし、これは EntityObject であり、新しいものではない (IsNew が私のフラグです) ため、else に移動します。ここに私の問題があります:set.Attachはこのエラーをスローします

「同じキーを持つオブジェクトが既に ObjectStateManager に存在します。ObjectStateManager は、同じキーを持つ複数のオブジェクトを追跡できません。」

そして次の瞬間に、ApplyCurrentValues はこれをスローします。

「提供されたオブジェクトのキーと一致するキーを持つオブジェクトが ObjectStateManager で見つかりませんでした。提供されたオブジェクトのキー値が、変更を適用する必要があるオブジェクトのキー値と一致することを確認してください。」

これらの両方がどのように真実である可能性がありますか?

詳しくは:

_item は別のコンテキストで Get によって作成されました。その後、そのコンテキストは破棄されました。その時点で、_item には EntityState.Unchanged がありました。それにいくつかの変更を適用したところ、EntityState.Modified に変更されました。(コンテキスト (およびその ObjectStateManager) がなくなっているはずだったので、私はそれを期待していませんでした。) とにかく、保存 (上記) に到達すると、状態は (デバッガーによって報告されたように) Modified ですが、私は持っていますそれまでに新しいコンテキスト。この時点ですべての ObjectStateEntries (Added、Deleted、Modified、Unchanged) のリストを取得した場合、ApplyCurrentValues が報告するように 2 つしかなく、_item はそれらの 1 つではありませんが、「それはそこにも!」。おそらく問題は、それがまだ古い ObjectStateManager にアタッチされていることです (ObjectStateManager を破棄させない参照があるでしょうか?)。