問題タブ [objectcontext]

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 投票する
2 に答える
3994 参照

.net - Entity Framework:コンテキストにオブジェクトがあるかどうかを確認する方法はありますか?

状況: 過去のコンテキストからのセッション内のオブジェクトは、他のオブジェクトが新しいコンテキスト内にあるため、別のオブジェクトの親として設定できません。

コンテキストから取得した User in session があるとします。ページがリロードされ、そのコンテキストが破棄され、新しいコンテキストが作成されます。

ページのリロード

私がやりたいことは次のとおりです。

セッション内のオブジェクトが現在のコンテキストに属していない場合、データベースから再ロードして、現在のコンテキスト内の他のすべてのオブジェクトと同じコンテキストによって「所有」されるようにするという考え方です。(リクエストごとにコンテキストを使用しています)

アップデート

したがって、これを修正する方法をよりよく理解できるようになるまで、一時的にこれを行いました。

アイデアは、セッション内のオブジェクト (sessionUser) がコンテキスト内のオブジェクトと同じかどうかを確認することです。これで、if は問題なく動作します。コンテキストが初めて作成されたときに、データベースにアクセスしてユーザーを取得する必要があります。比較すると、それらが同じではないことは明らかであり、sessionUser は現在、コンテキスト内のユーザーです。次に if がチェックされると、sessionUser と userToCheck は同じになります。

問題はまだあります:

常にデータベースにヒットします。これは良い解決策ではありません。

もっとアップデート

結局、これが答えかもしれません。私はこのルールを忘れていました:

x は ObjectQuery 型のプロパティです。ObjectQuery を実行すると、常にバッキング ストアにヒットします。それが彼らの仕事です。データベース クエリを実行したくない場合は、ObjectQuery を使用しないでください。

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

entity-framework - ADO.NET Entity Framework UpdateException に関するヘルプが必要

私は自分のデータベースに連絡先テーブルと電話テーブルを持っています。電話テーブルには、連絡先への電話を参照するキーを持つ列「ContactId」があります。

サーバーのキー オプションで、削除オプションを「カスケード」に設定しました。

コンテキストを使用して連絡先を削除しようとすると:

上記のステートメントは UpdateException をスローし、ContactId 列がその ID に設定されている Phone レコードがまだ Contact にあることを知らせます。

これで、手動で行うことができ、最初に関連するすべての電話を削除してから連絡先を削除できることがわかりましたが、より効率的な方法を探しています。これをすべて自動的に行う必要があります。

どんな提案や実践も歓迎します。

ありがとう。

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

c# - エンティティ キーでエンティティ フレームワークとの多対多の関係を追加/削除する方法は?

私は試した:

例外がスローされる前に attach を呼び出さずに Remove() を使用しようとすると、リレーションは削除されません。

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

entity-framework - 非同期ObjectContext.SaveChanges()?

SaveChanges(Winアプリ)の(Winアプリ)に変更を非同期で保存してもらいたいのですObjectContextが、ユーザーが作業を続けている間、ユーザーにマーキー(または制御可能?)のプログレスバー(これは簡単に実装できます)を表示します。

SaveChanges基本的にのをオーバーライドしたいObjectContext

誰かがこれについて以前に考えたことがありますか?

0 投票する
4 に答える
5317 参照

c# - 操作の各セットに対して再利用可能なObjectContextまたは新しいObjectContext?

私はEntitiesFrameworkを初めて使用し、自由な時間にそれをいじり始めたところです。私が持っている主な質問の1つは、ObjectContextsの処理方法に関するものです。

これらの中で一般的に推奨/推奨されるもの:

これ

それともこれ?

0 投票する
3 に答える
1219 参照

c# - EF:コンテキストが破棄された後に参照をロードしますか?

ADO.NET Entity Framework に苦労しています。これは私のER図です:

オブジェクト コンテキストの有効期間について質問があります。次のようにデータをリクエストするとします。

すべての親エンティティのリストを取得します。しばらくして (数時間?)、ユーザーはどれを検査するかを決定します。(その間、エンティティ オブジェクトはアプリケーションのいくつかの層を通過しました。) 次に、レコードのすべての詳細をロードする必要があります。

これは、MyParentEntity オブジェクトがそれを作成したオブジェクト コンテキストへの接続を失ったため、ObjectDisposedException につながります。これを処理するには、いくつかの可能性があります。

1) MyObjectContext の同じインスタンスを常に使用でき、それを閉じることはありません。これは大量のメモリの浪費につながります。

2)「(コンテキスト)を使用する」ブロックを離れるたびに、すべてのエンティティオブジェクト(およびその子エンティティと親エンティティ)を手動で Detach() できます。そして、新しい「using(context)」ブロックに入るたびにそれらを Attach() できます。多くの努力につながります。(私の意見では、フレームワークは労力を増やすのではなく減らすべきです。)

3)新しい「using(context)」ブロックに入るたびに、各エンティティをリロードしてから破棄します。SQL Server の (不必要な) 負荷が増加し、メモリも浪費します。

4) アプリケーションの起動時に、すべての詳細、すべての参照、すべての参照のすべての参照、およびそれらの参照の参照をロードできます。(議論はありません、これは本当にばかげています!)

5) ... (オプションを忘れましたか?)

ここで、あなたへの大きな質問: どの方法を選択すればよいですか? 私が見ていない別の方法はありますか?それとも、フレームワークの精神を完全に誤解していましたか?

前もって感謝します

更新: Windows フォーム アプリケーションです。

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

c# - ObservableCollectionとObjectContextを同期させる最善の方法は?

People の ObservableCollection (ユーザーのクエリに応答して取得するエンティティ フレームワーク オブジェクトのセット: 検索ボックス) にバインドされたリストボックスを含むウィンドウがあり、編集、削除、新規追加などの機能があります。現時点では、データベースに何かを追加または削除するたびに、OC でも動作することを確認しています。これを処理するより良い方法はありますか?

ありがとう、コーハン。

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

asp.net-mvc - ASP.NET MVC での Entity Framework とオブジェクト コンテキストの有効期間

プロジェクトで Entity Framework を使用していますが、エンティティをビューに渡すと問題が発生します (これらのエンティティには次の行に沿って遅延初期化されたオブジェクトがあることに注意してください: Products.Owner、所有者はObjectContext が範囲外であることを示す実行時例外が発生します。

using (.... entities...) { .... } ステートメントを使用してサービスからエンティティを取得しているため、これは理にかなっています。つまり、結果が返されたときに破棄されます。

どうすればこれを回避し、最初から最後まで生きているオブジェクト コンテキストを持つことができるでしょうか。ありがとう。