問題タブ [self-tracking-entities]

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 に答える
273 参照

entity-framework-4 - 削除時のEF4循環参照の問題

こんにちは、EF 4 セルフ トラッキング エンティティを使用しています。次のように、3 つのテーブル (アンケート、セクション、およびページ) があります。

そのため、EF モデルの質問票にはセクションがあり、セクションにはページがあります。WhenClosedShowPageId は、アンケートが閉じられたときに表示するページを参照する null 許容の int です。すべての参照には、参照整合性を維持するための関連付けがあります。

すべてのエンティティを削除済みとしてマークして保存しようとすると、問題が発生します。データを取得したときに WhenClosedShowPageId が null だった場合、削除は正常に機能します。WhenClosedShowPageId が値に設定されている場合、EF は削除する順序を判断できません。これは理解できます。ただし、 WhenClosedShowPageId を null に設定し、エンティティを削除済みとしてマークして保存すると、同じことが起こります。私は、EF がデータベースで WhenClosedShowPageId を null に設定する更新ステートメントを最初に生成し、次にエンティティを削除することを期待していました。

この問題を回避する唯一の方法は、自分で 2 つの独立した保存を行うことです。1 つ目は WhenClosedShowPageId を null に設定し、2 つ目はエンティティを削除することです。ただし、これは非常に階層化されたアプリであり、このためだけに特別なケースを作成する必要はありません。

これを回避する方法はありますか?

ダレン

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

entity-framework - エンティティをエンティティフレームワークのObjectStateManagerからアンロードできますか?

WCFを介した自己追跡エンティティでEntityFrameworkを使用しています。

多対多の関係を持つCustomerとPriceMatrixの2つのエンティティがあります(顧客は多くの過去の価格マトリックスを持つことができ、マトリックスは顧客のグループ間で共有できます)

クライアントには単一のPriceMatrixがあり、それを更新してサーバーに送り返します。サーバーは、このPriceMatrixを更新するか、複製して複製を更新するかを選択する前に、このPriceMatrixが他の顧客間で共有されているかどうかを確認する必要があります。

私が抱えている問題は、更新されたPriceMatrixをアタッチする前にPriceMatrixをロードして調べているため、ApplyChanges()を呼び出すと次のエラーが発生することです。

「オブジェクトのキー値がObjectStateManager内の別のオブジェクトと競合しているため、AcceptChangesを続行できません。AcceptChangesを呼び出す前に、キー値が一意であることを確認してください。」

小切手をコメントアウトすると(したがって、PriceMatrixをロードしない場合)、すべてが正常に機能します。

私が本当にやりたいのは、その状態を調べた後、PriceMatrixをアンロードしてから、クライアントから受け取った更新されたPriceMatrixを添付することです。

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

wcf - DataContracts VS Default Entity Framework Entities オブジェクトを使用した WCF サービス

DataContracts VS Entity Framework Entities オブジェクトで WCF サービスを使用することの長所と短所は何ですか?

ADO.net Self Tracking Entity Generator を使用してデータ コントラクトを生成すると、データ層のクラスが生成されます。

私のWCFサービスでそれを使用する最良の方法は何ですか? datacontract によって生成された ADO.net Self Tracking Entity Generator は、サービスを介して交換されますか、それとも WCF サービスは引き続き既定のエンティティ フレームワーク オブジェクトを使用しますか?

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

entity-framework - EF4 STE インクルード パス....エクスクルード パス?

コンテキスト: リポジトリ パターン、WCF、WPF/SL

私の自己追跡エンティティのリポジトリでは、クエリを正しく処理するために、いくつかの関連プロパティを明示的にロードする必要があります。これらはクライアントから要求されたインクルードではありません。ネットワーク トラフィックを適正に保つために、それらを削除したいと考えています。これまでの私の解決策は次のとおりです。

  1. 受信クエリ
  2. リクエストに答えるために必要なインクルードを読み込む
  3. クエリを実行
  4. 一時的な IEnumerable を作成する
  5. 4) を繰り返し、すべての項目を再度読み込みます。今回は、クライアント アプリから要求されたインクルード パスのみを使用します。
  6. WCF 経由でエンティティを返す

私はこれをしたいと思います:

  1. 受信クエリ

  2. すべてのインクルードをロードします (インフラストラクチャとクライアントが要求したもの)

  3. クエリを実行

  4. 「インフラストラクチャ」をアンロード

  5. WCF 経由でエンティティを返す

    これを行う適切な方法は何ですか?

ありがとう、アルミン

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

c# - 自己追跡エンティティの目的は何ですか?

.netの自己追跡エンティティと、それらを*.edmxファイルから生成する方法について読んでいます。私が理解するのに苦労しているのは、これらのエンティティを生成すると、基本的なEFエンティティよりも何が得られるかということです。また、自己追跡エンティティとSilverlightについて言及している人もいますが、クライアント側やRIAサービスによって生成された共有クラスではなく、なぜこれらを使用するのでしょうか。

自己追跡エンティティのポイントは何ですか?なぜそれらを使用するのですか?

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

wcf - EF4自己追跡エンティティ

現在、n層シナリオでSTEを使用しようとしています。オブジェクトのグラフを取得したり、オブジェクトを更新したりできるWCFサービスと、そのグラフの側面を編集して変更をサービスに送信できるクライアント(WPF)アプリケーションがあります。

私の問題はこれです。私が取得するオブジェクトのグラフは非常に大きく(画像を含むこともあります)、更新は最小限です。ただし、更新を送信すると、オブジェクト間の関係により、グラフ全体がサービスに送信されます。

例えば; Customer / Order / OrderDetailシナリオが与えられた場合:注文と関連するOrderDetails(3レベル)で顧客を取得します。次に、単一のOrderDetailを更新して、数量を変更します。OrderDetailオブジェクトを取得するWCFメソッドを介して更新するOrderDetailを送信しますが、シリアル化はOrderを介してリレーションシッププロパティに従って顧客に送信し、変更されたOrderDetailだけでなく、すべてのOrders、OrderDetails、および顧客をシリアル化します。

サービス呼び出しパラメーターがシリアル化されたときにこれらすべてが返されるのを防ぎ、関係に従わずに更新するオブジェクトを返すにはどうすればよいですか?

私がSTEについて見つけることができるすべての例(そしてまだ多くはありません)は、実際にすべての関連オブジェクト(オンラインのブログ/投稿の例など)を渡すように設計されているようです。

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

entity-framework - 自己追跡エンティティ - コレクションに追加するときに、変更されていないエンティティを挿入しようとします

EF4 自己追跡エンティティの使用。

ユーザーが所属できる「グループ」のコレクションを持つ「ユーザー」エンティティがあります。グループ ID のリストだけを指定して、このユーザーにいくつかの「グループ」を追加/削除したいと考えています。

このメソッドの結果は、でエラーをスローしますContext.SaveChanges()nullエラーは、「グループ」エンティティがプロパティを許可しないことを報告しNameます。

これは、新しいグループをINSERTING している場合に予想されますが、明らかに私がやろうとしていることではありません。この問題を解決するにはどうすればよいですか?

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

wcf - EF4 Self-Tracking エンティティと WCF シリアル化によりスタック オーバーフローが発生する

上記の構成を機能させようとしましたが、運がありません。

ステップ1)

WCF サービス アプリケーションプロジェクトで新しいソリューションを開始しました。

ステップ2)

このプロジェクトでは、edmx ファイルを追加し、非常に単純なモデルを作成します: IdDisplayNameを持つ
Entity Parent IdChildDisplayNameを持つ Entity Child Association from Parent to Child1-to-m、結果として両方のエンティティに NavigationProperties が生成されます。 問題なくデータベースを生成しました。生成後、関連する 2 つの子オブジェクトを持つ 1 つの親オブジェクトを手動データベースに挿入しました。


ステップ 3)

ADO.NET Self-Tracking Entity Generatorを使用して、コード生成を追加しました。これは別のアセンブリで行う必要があることはわかっていますが、わかりやすく簡単にするために、すべてを同じプロジェクト (WCF プロジェクト) に配置します。

ステップ 4)

IService インターフェイスを変更して、単純な get を作成しました

対応する実装では、コンテキストからPageオブジェクトを取得して返します。

問題:

ここでこのプロジェクトを実行すると (Service1.svc は開始ページです)、VS2010 はサービスを呼び出すテスト クライアントを自動的に生成します。しかし、サービスを呼び出すと、StackOverflowException が発生します。サーバー側でのデバッグは、オブジェクト グラフが返されるまで問題ないように見えます。

Include("Child")を削除すると、すべて問題ありませんが、もちろんChildオブジェクトが欠落しています。
何が欠けているのかわかりません。私は多くのハウツーとガイドを読みましたが、すべて私がやった方法でそれを行います(少なくともそれは私が思うことです)...私はここ
で 学校の例を試しましたが、データベースの生成と例のコーディングは一致しません。

ですから、誰かがこの作業を行う方法を教えていただければ幸いです。

PS

  • はい、すべてのエンティティ クラスは「[DataContract(IsReference = true)]」とマークされています。
  • edmx ファイルで Lazy-Loading が「false」に設定されている

編集:
WCF を IIS ではなく、コンソール アプリでホストされるように変更しました。もちろん、私は自分の小さなテスト クライアントを作成する必要がありました。
面白いことに、今ではすべてが機能しています。もちろん理由はわかりませんが、少なくとも私のテストでは、これが解決策です...

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

database - EF4ナビゲーションプロパティを正しく使用するにはどうすればよいですか?

EF4モデルファーストアプローチを使用してデータベースを作成しました。私のモデルでは、2つのエンティティ間にN対Mの関係があります。

ここに画像の説明を入力してください

データベースに、タイプの3つのDiagnosisレコードとタイプの3つのレコード、TreatmentSchemaおよびそれらの間の関連付けを含む、いくつかのダミーデータを入力しました。これを行うために使用したコードスニペットは次のとおりです。

EF4のマッピングによって作成された参照テーブルに関連付けが実際に保存されていることを確認しました。Diagnosisただし、後でコレクションを介してを取得するcontainer.Diagnosesと、その.TreatmentSchemasコレクションは常に空になります。

EF4で生成されたコードにデバッグしてみましたが、コレクションを怠惰に作成するだけですが、関連するオブジェクトでいっぱいになりません。AyendeのEntityFrameworkProfiler、プロパティにアクセスしたときにクエリがまったく生成されていないことを示しています。これにより、ここで何か間違ったことをしていると思います。

関連するリストを取得するにはどうすればよいTreatmentSchemasですか?

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

.net - コレクションをエンティティに適切に保存するには?

内部に EntityCollection を持つオブジェクトがあります。新しいエンティティを追加するだけで、すべてうまくいきます。ここでそれを行うコード:

しかし、エンティティを更新しようとすると、次のメッセージが表示されます。

オブジェクトのキー値が ObjectStateManager 内の別のオブジェクトと競合するため、AcceptChanges を続行できません。AcceptChanges を呼び出す前に、キー値が一意であることを確認してください。

同じコレクション オブジェクトを使用する場合でも。つまり、新しい場合はデータベースに保存されるため、コレクション内に同じエンティティ オブジェクトが存在することはありません。しかし!コレクションに別のエンティティに同じコードを適用しようとすると、それらは保存されますが、オブジェクト (コンテナ) に適用しようとすると、このエラーが発生します。

助けてくれてありがとう