問題タブ [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.
asp.net-mvc-3 - MVC3ナビゲーションプロパティの属性とクライアント側の検証
私はMVC3への最初の暫定的なステップを実行していますが、モデル内のナビゲーションプロパティをビューに変換する際に問題が発生しました。ビューのナビゲーションプロパティでは、クライアント側の検証が許可されておらず、「表示」ラベル属性も取得されていないようです。
私は次の単純なモデルを持っています:
このモデルを参照するもの:
このモデルの読み取り/書き込みアクションとビューを使用してコントローラーを作成すると、次の作成フォームが表示されます。
これは、[エンティティタイプ]ドロップダウンのラベルを除けば問題ありません。何らかの理由で、モデル内のナビゲーションプロパティの[表示]属性を取得していません(スペースが不足していることに注意してください)。また、プロパティを「必須」属性で装飾しているにもかかわらず、クライアント側の検証がドロップダウンリストに対して有効になっていません(サーバー側の検証は問題なく機能します)。クライアント側の検証は、他のフィールドで機能します。必要なすべての.jsスクリプトファイルが含まれていることに注意してください。また、関連する有効化検証キーをweb.configに追加しました。
私がここで見逃しているアイデアはありますか?みんなありがとう。
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 を実行します。
コードで私はこれをやっています:
asp.net-mvc-3 - EntityFrameworkでエンティティのナビゲーションプロパティを更新する方法
EntityFrameworkを使用するASP.NETMVC 3には、次のように、別のオブジェクトを参照するナビゲーションプロパティを持つドメインオブジェクトがあります。
Personのインスタンスを作成してデータベースに追加しようとすると、DBContextはこのエンティティ「Person」のキャッシュを保持してデータベースに送信します。したがって、同じコンテキストインスタンスの存続期間の後半で、このエンティティにアクセスしようとすると、ナビゲーションプロパティが更新されないため、Companyフィールドは常にnullになります。
データベースに存在するものでナビゲーションプロパティを更新する方法はありますか?
遅延読み込みがオンになっています。
c# - Navigationプロパティを使用してデータを取得する
Entity Frameworkを使用してアプリを作成しています。データベースからデータベースモデルをロードしました。Course
テーブルにDepartment
は、外部キーがあります。グリッドビューを作成し、そのデータソースをコーステーブルに設定しましたが、代わりに表示したいです。 .Navigationプロパティを次のように使用できますが、navigationプロパティを使用してDepartment Tableからデータ(Department name)を取得するにはどうすればよいですか。これで私を助けることができる人は誰でもこれは私のコードですNavigation Property
DepartmentID
Deaptment Name
department ID
Department.count
First関数を使用しないと、部門名属性にアクセスできません。First()を使用すると、次のようになります。
どうすれば解決できるか教えてください。
c# - EF4.3.1LinqToEntitiesクエリに継承されたナビゲーションプロパティを含める
コードファーストアプローチと流暢な構成を使用して、EF4.3.1で単純な継承シナリオをセットアップしようとしています。
1対1のナビゲーションプロパティを持つ抽象基本タイプ「A」を作成しました。また、1対1のナビゲーションプロパティを持つ継承されたクラス「AA」は次のとおりです。
最初のレベルのナビゲーションプロパティを使用してデータを取り戻そうとすると、期待どおりに機能します。
しかし、次のように継承されたタイプのナビゲーションプロパティを含めようとすると:
実行時にEntityCommandCompilationExceptionが発生し、次の内部例外メッセージが表示されます。
指定された式のResultTypeは、必要なタイプと互換性がありません。式ResultTypeは'Transient.reference[... A]'ですが、必要なタイプは' Transient.reference[...AA]'です。パラメータ名:arguments [0]
誰かが同様の問題に遭遇しましたか?
おそらく何かが足りないのですが、このサンプルの何が問題なのかわかりません。
モデルを期待どおりに機能させるにはどうすればよいですか?
c# - ナビゲーションプロパティが存在しない場合は挿入し、キーなしで存在する場合はそれを使用します
私は2つのテーブルを持っています:
注文のリストを挿入する注文テーブルに(EFを使用して)挿入したい(すべて同じ人で、私は人の名前しか知らない)、その人が人のテーブルに存在しない場合は、彼はそれに挿入され、彼は存在します。注文には適切な人が入力されます。冗長な呼び出しであるため、最初にその人がpersonテーブルにあるかどうかを照会したくありません。変更の保存中にのみ追加し、事前にサーバーにクエリを実行する可能性はありますか?そんな感じ:
foreign-key-relationship - ナビゲーションプロパティを再帰的に含める方法
2つのデータベースがあり、それぞれに対応するEntityFramework DBコンテキストがあり、Entity Framework 5、Code-Firstを使用しています。
次のようなテーブルがあります。
Foo
次に、FooBar
内Database1DbContext
とBar
内にエンティティがありDatabase2DbContext
ます。
Foo
Parent
(タイプのFoo
)、Children
(タイプのICollection<Foo>
)およびBar
(タイプの)ナビゲーションプロパティがありBar
ます。
(タイプの)および(タイプの)FooBar
ナビゲーションプロパティがあります。Foo
Foo
Bar
Bar
さて、私が欲しいのは、すべてのとのすべてにロードされる.Include(foo => foo.Bar)
ようにできることです。Bar
Parent
Children
Foo
混乱しすぎていないことを願っています。
Bar
PS:ナビゲーションプロパティは別のデータベースにあるため、設定で問題が発生することはわかっています。いくつかの関連する回答で、ビューまたは同義語のいずれかを示唆する提案を見ました。私の状況のその側面も考慮に入れているどんな答えも大いに感謝されるでしょう。
c# - Entity Framework によるプロジェクション
Entity Framework を使用したプロジェクションの作成について質問があります。
Profile、Biography、BiographyTranslation の 3 つのテーブルがあります。
次の投影を行いたい: (伝記 = IQueryable)
私の問題: OwnerId は正しく投影されますが、翻訳の数は常に 0 です。
プロジェクションはコレクション プロパティでは機能しませんか?
biographies.Inlcude("Translations") も試してみましたが、結果は同じでした。
アップデート
ここにある小さなテストプロジェクトを作成しました:
3 つのテーブル (create および insert ステートメントを含む)、EDMX ファイル、および伝記をロードするためのクラスのみです。コレクション ナビゲーション プロパティを投影するためにまだ動作させることができません。単純なナビゲーション プロパティは正常に動作します。多分誰かがテストプロジェクトから私が間違っていることを見ることができます....
アップデート
私は新しいアプローチを試みましたが、まだ運がありません:
アップデート
匿名型を使用すると、驚くほど機能します...
entity-framework-4 - Entity Framework 4.3 のフィルターを使用してナビゲーション プロパティを読み込む
数日前、2 つのクラスのマッピングとEF の使用に関する質問をしました。マッピングは順調に進んでいますが、オブジェクトに関連付けるクラスのナビゲーション プロパティでいくつかの問題に直面しています。1 人のユーザーのみのメッセージを読み込んでおり、そのユーザーのみに関連するステータスが必要です。ユーザーがメッセージを既読/未読としてマークしたかどうか、およびいつマークしたかを表示したいと思います。次のようなデフォルトの読み込みメカニズムを使用すると、ユーザーに関係なく、メッセージに関連するすべての履歴が読み込まれます。Message
MessageStatusHistory
StatusHistory
Message
MessageStatusHistory
1人のユーザーのみの履歴をフィルタリングするには、次のトリックを試しました:
エラーが発生しています:
私もコメントしてみましたStatusHistory = m.StatusHistory.Where(x => x.UserId == userId).ToList()
が、助けにはなりませんでした。
フィルタリングされた StatusHistory でメッセージを取得するのを手伝ってください。
編集:-上記はこのコードで解決されます:
しかし、メッセージへの返信を含めようとすると:
q.ToList()
for を使用してクエリをリストに変換するとエラーが発生しますHistories = m.Histories.Where(x=> x.SenderId == userId).ToList()
。
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 を破棄させない参照があるでしょうか?)。