問題タブ [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 投票する
2 に答える
312 参照

wpf - ナビゲーション プロパティを含む SelfTracking エンティティの実際の状態を取得する

オブジェクトに変更が保存されていない場合、オブジェクトの表示を変更したいと考えています。そのまま使えると思っChangeTracker.Stateていたのですが、Navigation Property を変更しても Modified に変わりません。

たとえば、連絡先オブジェクトには、電話、住所、および電子メールのナビゲーション プロパティが含まれています。連絡先の名前を変更すると、状態は Modified に変わりますが、電話番号を変更すると、オブジェクトの状態は Unchanged のままになります。

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

c# - エンティティがなくなったのに、エンティティがまだ検証されているのはなぜですか?

  1. TrackableCollection( )に新しいエンティティを追加しますcontext.Entities.Add(entity)(EntityState = New)
  2. 保存せず、追加したエンティティをTrackableCollection( context.Entities.Remove(entity)) から削除 (EntityState = Unmodified)
  3. 保存。( context.SubmitChanges())

エンティティに関連付けられたデータ注釈からまだ検証エラーが発生します。なぜですか?

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

entity-framework - EF STE と自己参照テーブルの問題

これは私の最初の投稿です。すべてがうまくいくことを願っています。

ここに私の問題があります: データベースにUserTypesというテーブルがあります。それは持っています:

  1. ID;
  2. IsPrivate;
  3. 親_ID;

該当するのは1枚目と3枚目です。UserTypes_Tという別のテーブルがあります。これには、言語固有のさまざまなタイプの情報が含まれています。フィールドは次のとおりです。

  1. 言語_ID;
  2. UserType_ID;
  3. 名前;

私が達成しようとしているのは、UserTypesテーブルから階層全体を読み込み、それを TreeView に表示することです (これは今のところ関係ありません)。次に、いくつかのユーザー タイプを選択して、個別の編集ボックス (名前) とコンボ ボックス (親) で編集できます。

データベースの変更を永続化しようとするまで、すべてが正常に機能します。EF は、これらのテーブルに対して 2 つのエンティティ クラスを生成してくれました。

ユーザータイプのクラスには次のものがあります。

  1. ID;
  2. IsPrivate;
  3. 親_ID;
  4. 自己参照のナビゲーション プロパティ (0..1)。
  5. 子要素のナビゲーション プロパティ。
  6. UserTypes_T テーブルの別のナビゲーション プロパティ (1..*)。

翻訳された情報のクラスには次のものがあります。

  1. UserType_ID;
  2. 言語_ID;
  3. 名前;
  4. UserTypes テーブルへのナビゲーション プロパティ (*..1)。
  5. Languages テーブルへのナビゲーション プロパティ (*..1)。

以下を使用して必要なデータを取得します。

私のWCF Webサービスで。問題なく新しいユーザー タイプを追加できますが、古いユーザー タイプを更新しようとすると、奇妙なことが起こります。

ルート要素 (Parent_ID==null) を更新すると、すべてが機能します。Parent_ID!=null の要素を更新すると、次のエラーが発生します。

オブジェクトのキー値が ObjectStateManager 内の別のオブジェクトと競合するため、AcceptChanges を続行できません。

私はインターネット全体を検索し、Diego B Vega (およびその他多数) のブログ投稿を読みましたが、私の問題は異なります。親ユーザー タイプを変更すると、実際にはナビゲーション プロパティではなく、Parent_ID プロパティが変更されます。問題を回避するために、生成されたナビゲーション プロパティではなく、常に ID を使用するようにしています。

私は少し調査を行い、取得したオブジェクトグラフが何であるかを確認しようとしましたが、重複するエンティティがたくさんあることがわかりました:

ルート要素には、その子要素のリストがありました。各子要素には、ルートまたはその親などへの後方参照がありました。想像できるでしょう。ID を使用して必要なデータを取得/設定したため、これらのナビゲーション プロパティを使用していなかったので、それらをモデルから削除しました。具体的には、 UserTypesエンティティ クラスからポイント45を削除しました。次に、各要素を 1 回だけ含むオブジェクト グラフを作成しました。新しいアップデートを試しましたが、同じ問題がありました:

ルート要素は正常に更新されましたが、いくつかの親を持つ要素が同じ例外をスローしました。

UserTypes_Tエンティティ クラスに、ユーザー タイプを指すナビゲーション プロパティがあることがわかったので、それも削除しました。その後、このエラーは消えました。オブジェクト グラフ内のすべてのアイテムは一意でした。しかし、問題は残っていました - ルート要素を問題なく更新できましたが、(除外なしで) 子を更新しようとすると、生成された Model.Context.Extensions クラスで null 参照例外が発生しました:

名前 ( UserTypes_Tにある) のみを更新しようとしましたが、エラーは同じです。

私はアイデアがなく、この問題を 8 時間解決しようとしてきました。誰かが私にアイデアを提供したり、経験を共有したりできれば幸いです。

PS:

子オブジェクトの更新に成功した唯一の方法は、次のコードを使用してデータを取得することでした。

ここで、UserType1はナビゲーション プロパティで、親ユーザー タイプを指し、UserTypes1はナビゲーション プロパティで、子要素のリストを保持します。ここでの問題は、EF がオブジェクトを「修正」し、Parent_IDnullに変更することでした。もう一度設定すると、EFもUserTypes1を設定します...この動作を停止する方法はありますか?

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

c# - WCF Ria Servicesを使用してエンティティの変更を追跡する方法は?

クライアントで発生したエンティティに加えられた変更をデータベーステーブルに記録する必要があります。ただし、変更を加えてChangeTrackerプロパティを調べると、変更が発生していないと表示されます。

[サービス]

[クライアント]

では、自己追跡エンティティとWCF Riaサービスが共存できない場合(これは私が疑っています)、1つの追跡はどのように変化しますか?

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

c# - 型の再利用オプションをオンにしてサービス参照を追加する空の reference.cs ファイル

シナリオ

  • ビジュアル スタジオ 2010
  • シルバーライト 4
  • エンティティ フレームワーク
  • 自己追跡エンティティ

問題

サーバー側では、Entity Framework モデルを使用してエンティティ オブジェクトを生成しました。エンティティを生成するために、セルフ トラッキング T4 テンプレートを使用しました。これらのエンティティは共有され、クライアント側 (Silverlight 4 プロジェクト) から使用できます。

しかし、新しい Web サービス参照を追加しようとすると、プロキシ ジェネレータが機能しません。reference.cs ファイルが空です。Web 参照の構成で「タイプの再利用」オプションをチェックしました。共有されるアセンブリを確認しました (エンティティ アセンブリのみ)。

エンティティの DataContract 属性からすべての (IsReference=true) を削除しようとしましたが、うまくいきませんでした。

アイデアや回避策はありますか?

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

wcf - WCF によるセルフ トラッキング エンティティ (EF) の検証

OperationContractエンティティを追加/更新するときに、何をすべきかを定義するのに問題があります。エンティティ (またはエンティティのリスト) を WCF サービス経由で送信したいと考えていますObjectContext(これにより、実際の検証を行うためにビジネス マネージャーがインスタンス化されます)。

エンティティがすべての検証ルールに合格した場合 (より複雑なビジネス ルールの合否を判断するためにデータベースにクエリを実行する必要がある場合があります)、エンティティはデータベースに保存され、返せるようにする必要があります。その ID (ID 列の主キー) と同時実行トークン (タイムスタンプ列) の値ですが、それが失敗した場合は、明らかに、何が問題だったかを示すメッセージが必要です。更新の場合、必要なのは同時実行トークンの新しい値だけですが、ここでも検証メッセージが必要です。

さらに複雑にするために、エンティティは複数の子/孫エンティティを持つこともできます。たとえば、トリップにはストップがあり、オーダーが含まれる可能性があります。

私は、人々が現実の世界でこれをどのように扱っているのか疑問に思っています。最も単純な例は、次のような WCF サービスの操作を示しています。

これを処理するための素晴らしいアイデアはありますか? 私は本当にここで実用的なアドバイスを探しているだけだと思います。

1 回のサービス呼び出しでオブジェクトのコレクションを保存しようとする必要がありますか?

フォールト コントラクトを通じて検証メッセージを伝達する必要がありますか?

アドバイス/入力があれば助かります、ありがとう!

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

wcf - セルフ トラッキング エンティティのデバッグ - オブジェクトのキー値が ObjectStateManager の別のオブジェクトと競合するため、AcceptChanges 例外が発生する

セルフ トラッキング エンティティへの変更を保存するときに例外が発生します。

この問題は、次のような他の質問で対処されていると思います:自己追跡エンティティ - オブジェクトのキー値が ObjectStateManager の別のオブジェクトと競合するため、AcceptChanges を続行できません

私の質問は、開発と本番の両方でこの問題をデバッグする最良の方法は何ですか. 例外を引き起こしているエンティティまたはエンティティ タイプの詳細をキャッチ/アクセスできる追加情報はありますか。

そうでない場合、別のオブジェクトを参照する重複キーを探してオブジェクト グラフをトラバースするために何かを書く必要がありますか? もしそうなら、誰もこれを経験していますか?

詳細情報:

私のシナリオは次のとおりです。クライアントは、他のエンティティへのさまざまな FK を持つすべてのエンティティのコレクションを含む WCF サービスを介してエンティティを取得します。これらの FK リレーションシップはすべて linq クエリに含まれているため、完全なオブジェクト グラフが得られます。

クライアントのビューは、パフォーマンスのためにルックアップ テーブルなどの静的データ用に以前にフェッチされたエンティティを使用します。User への FK を持つ Customer オブジェクトがある場合、これはサービスから取得されたときにロードされます。Order などの別のエンティティをオブジェクト グラフに追加し、Customer オブジェクトと同じ Id を持つこのオブジェクトに User プロパティを設定しますが、エンティティは別の時点で取得されたため、別の ObjectContext を使用します (つまり、オブジェクトは同じ ID ですが、オブジェクトの同じインスタンスではありません) このエラーが発生します。

他の質問へのリンクは、これを回避する方法を示していますが、エラーを追跡できるように、問題を引き起こしているエンティティに関する詳細情報を探しています。

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

wpf - 自己追跡エンティティトラフィックの最適化

私は、エンティティフレームワークと自己追跡エンティティでWPFを使用する個人的なプロジェクトに取り組んでいます。CRUD操作のいくつかのメソッドを公開するWCFWebサービスがあります。今日、私はいくつかのテストを行い、実際にこのサービスを通過するものを確認することにしました。このようなことを期待していましたが、本当にがっかりしました。問題は、1つのオブジェクトのみの単純な更新(または削除)操作の場合です。たとえば、カテゴリIが、すべての親カテゴリ、そのアイテム、子カテゴリ、およびそのアイテムなどを含むオブジェクトグラフ全体をサーバーに送信するとします。私の場合、それは非常に小さなデータベース(2つの主要なカテゴリと約20の合計と約60のアイテム)上の170KBのxmlファイルでした。本当に大きなデータベースを持っているとどうなるか想像できません。

STEを使ったトラフィックの最適化に関する記事をグーグルで検索しようとしましたが、成功しなかったので、誰かが似たようなことをしたか、いくつかの良い習慣を知っているかなどをここで尋ねることにしました。

私が思いついた可能性のある方法の1つは、より多くのサービス呼び出しを使用して、オブジェクトごとに必要なデータを取得することです。

それ以外の:

このようにして、カテゴリとアイテムが分離され、変更を加えたり、一部のオブジェクトを削除したりするときに、ネットワーク経由で送信されるデータが少なくなります。

同様の問題に直面したことはありますか?どのように解決しましたか、それとも解決しましたか?

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

.net - セルフ トラッキング エンティティ クリア コレクション

私は STE を持っていて、customer.Orders.Clear() のようなナビゲーション プロパティ コレクションをクリアしたいと考えています。ただし、Clear は注文を削除済みとしてマークしないため、ApplyChanges 呼び出しでは削除されません。注文をクリアし、すべてを削除済みとしてマークする組み込みの方法はありますか?

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

domain-driven-design - STEとPOCOを使用したDDD

Microsoftテクノロジ(すべてのコンポーネントを完全に制御できる)を使用してDDD(WCFを使用しているためDDDDの方が優れている)でn層アプリケーションを開発する場合、最適な選択はSTEとPOCOのようです(この最後の1つはDTOの使用を強制します) 。それは正しい?あなたの意見では、STEとDTOを必要な場所で使用することは理にかなっていますか?

ありがとう。