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

entity-framework-4 - EF4: POCO 、セルフ トラッキング エンティティ、POCO プロキシの違い

誰かが POCO 、 Self Tracking Entities 、 POCO Proxies の違いを指摘できますか?

実際、私はEntity Framework 4.0とPOCO(Repository Pattern)に取り組んでおり、POCOに変更を加えてObjectContext.Savechangesを呼び出すたびに、DBに反映されます。私の質問は、

  1. 追跡されていないため、Context はどのように変更を DB に永続化しますか?
  2. Context は POCO の追跡情報をオンザフライで生成しますか?

私が使用しているサンプルコード、

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

.net - Entityフレームワークを使用してFKを使用してデータを複数のテーブルに挿入する

今、映画に新しいレコードを挿入しようとしていますが、Director が DB に既に存在しているかどうか、音楽と同じかどうかはわかりません)。

UIから私は取っていall movie information, DirectorName and MusicNameます。

今、情報を保存しているときはdirectornamemusicname最初にコンテキストを使用するかどうか、次にSaveChanges()コンテキストをどのように行うかを確認する必要があります。

これがどのように機能するか教えてください。

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

.net - セルフ トラッキング エンティティ セットとインクルードの問題を伴う実体エンティティの読み込み

Self-Tracking Entity の .include メソッドに問題があります。documents という名前のテーブルには、States、Companys、Workers、および Departments テーブルとの関係があります。この関連データを含むすべてのドキュメントをロードしたいと考えています。私はこれを次のようにします:

しかし、これは私に例外をスローします:

指定されたインクルード パスが無効です。EntityType "workflowModel.Department" は、"States" という名前のナビゲーション プロパティを宣言していません。

会社でも同じエラーが発生します。奇妙なのは何ですか 労働者と部門は動作します。私は会社と州のためにも働いていません (私は複数形と単数形で組み込みを使用しました)。モデルの名前 (Entity Set Name プロパティ) を再確認し、名前をコピーしても機能しませんでした。何が起こっているのか考えている人はいますか?それとも、このすべてのデータをロードするための他の方法でしょうか? 助けてくれてありがとう!

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

asp.net - 複数の投稿にわたるASP.NETでの自己追跡エンティティの使用

私には単純な要件があります(だから私は思った...!)

Order、OrderLine、Productで構成されるモデルがあります。

Orderを作成し、OrderLines(製品に関連する各OrderLine)を追加したいと思います。Orderを作成し、それに新しいOrderLinesを追加します。投稿の合間に、OrderエンティティをSession(またはViewState)に保存します。ちょうどあなたが知っているように、私は正常に動作するバイナリシリアル化のサポートを追加しました。

したがって、関係はOrder> OrderLine(s)> Product(s)です。

問題が何であるかをすでに推測しているかもしれません-SaveChanges()を取得すると、通常の「オブジェクトのキー値がObjectStateManager内の別のオブジェクトと競合するため、AcceptChangesを続行できません」。エラー。

私はオンラインで多くの記事を参照しましたが、このケース(3つ以上のエンティティにまたがる関係がある場合)を処理しているようには見えません。例: http: //blogs.msdn.com/b/diego/archive/2010/10/06 /self-tracking-entities-applychanges-and-duplicate-entities.aspx

これは確かに非常に一般的な要件である必要がありますか?Entity Frameworkを使用して(DTOなどを使用せずに)同じようなことをしている人はいますか?

乾杯-助けて!:)

ニック

0 投票する
0 に答える
313 参照

entity-framework-4 - 自己追跡エンティティを再利用する方法は?

STEに関する数え切れないほどの問題の中で、私は今これに直面しています。これは些細なことですが、そうではありません。

簡単にするために、標準の請求書、注文、製品のシナリオを想定します。

請求書を受け取り、請求書を元の層に送り返す前に一部の製品の注文を追加する、ステートレスではない(何らかの理由で)層があるとします。

これは単純に聞こえますが、実際には、単純な解決策が見つからないSTEの問題です。問題は、注文に割り当てる製品エンティティのコレクションをどのように保持するかです。私が見ているように、私はこれらの方法の1つでそれをしなければならないでしょう、それはすべて大きな欠点を持っています:

請求書エンティティに発注する注文ごとに、データベースで製品エンティティをクエリします。

欠点:同じ製品が複数の注文で使用されている場合、請求書の変更がデータベースに保存されると、EFは例外をスローします。これは、同じ製品キーの複数のインスタンスがコンテキストで許可されていないためです。複数の注文で発生する製品は、一度だけ照会されてから注文間で共有されるようにすることはできましたが、それは間違いなく事態を複雑にします。

もう1つの欠点は、製品エンティティ(または別のドメインシナリオの同等のエンティティ)がかなり大きい場合、またはアプリケーション層で製品をデータベースにクエリすることが何らかの理由で実用的でない場合のパフォーマンスです。

アプリケーションの有効期間の開始時に、すべての製品エンティティについてデータベースにクエリを実行します

これは、製品のリストがめったに変更されない場合にユーザーアプリケーションに製品のリストを保持する場合の典型的なシナリオです。私の場合、データベースにクエリを実行したくありません。「製品」タイプのリストはアプリケーションの存続期間中に変更されないため、パフォーマンスは重要な問題であり、システムはデータベースが一時的に利用できなくなることに対して堅牢である必要があります。 「製品」と同等のエンティティのキ​​ャッシュされたコレクションを保持します。

欠点:ここでの主な欠点は、キャッシュされた製品を新しい注文エンティティに割り当てると、メモリリークが発生することです。その理由は、STEによって生成された「Fixup」メソッドが、製品のカスケード削除を処理するために、イベントハンドラーを製品のChangeTrackerにフックアップするためです。そのイベントハンドラーは、新しい注文とキャッシュされた製品を接続したままにして、キャッシュの存続期間中に追加されたすべての注文を蓄積します。解決策は、STEのある種の「フリーズ」プロパティを実装することです。これにより、変更の追跡が無効になるだけでなく、ナビゲーションプロパティの割り当て後も、エンティティと変更トラッカーの状態が変更されません。STEコードには多くの副作用があり、変更が困難なため、このような「フリーズ」変更を作成するのは難しい場合があります。

製品エンティティのクローンを作成する

ここでは、アプリケーションの有効期間の開始時に製品が照会されますが、製品エンティティを使用する代わりに、製品を注文に割り当てるときにクローンが作成されます。これにより、メモリリークの問題は解決されますが、クローン作成を実装して維持する必要があります。クローン作成をサポートするためにSTE.ttスクリプトを書き直すのはそれほど難しくない可能性があります。ただし、エンティティコンテキスト内の複数のエンティティが同じキーを共有する場合は問題が発生します。

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

entity-framework - エンティティ フレームワーク - セルフ トラッキング エンティティ

エンティティ フレームワークで STE を使用する場合、wcf 経由でエンティティを受け取るクライアント アプリケーション (Web サイトなど) を構築する場合、すべての機能を実現するためにモデル dll アセンブリ (クラスの定義を含む) を参照する必要がありますか? STEの?

または、サービス wsdls から生成されたプロキシ クラスを使用するだけで、どの機能が失われますか?

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

silverlight - EF4 + STE: WCF サービス経由で再接続しますか? 毎回新しいオブジェクトコンテキストを使用していますか?

Entity Framework 4 および STE (Self tracking entitites) と組み合わせて (ria ではなく) WCF を使用する予定です。これを正しく理解していれば、WCF はエンティティまたはエンティティのコレクション (たとえば、IQueryable ではなく LIST を使用) をクライアント (私の場合は Silverlight) に返す必要があります。

その後、クライアントはエンティティを変更または更新できます。この時点で、それは自己追跡だと思いますか? これは、追跡しない STE に関する問題が多数報告されているため、少し混乱するところです。

とにかく、更新するには、更新を行う別の方法でエンティティを WCF サービスに送り返すだけです。毎回新しい OBJECTCONTEXT を作成する必要がありますか? すべての方法で?

WCF のすべてのメソッドで毎回新しいオブジェクト コンテキストを作成している場合、STE をオブジェクト コンテキストに再アタッチする必要はありませんか?

基本的にこれだけではうまくいかないのでしょうか??

または、WCF サービスのコンストラクターで一度オブジェクト コンテキストを作成して、同じ WCF インスタンスを使用する 1 回の呼び出しとすべての追加の呼び出しで同じオブジェクト コンテキストが使用されるようにする必要がありますか?

クライアントからの各メソッド呼び出しで WCF サービスを作成および破棄することができたので、毎回新しい objectcontext を実際に作成しました。

objectcontext を非常に長い間存続させるのは良い考えではないことを理解しています。

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

wcf - EF4: [サービス参照の追加] を使用すると、STE (セルフ トラッキング エンティティ) で問題が発生し、変更が記憶されませんか?

問題が見つかりましたが、それは VS 2010 の BETA バージョンに関するものです。この問題が RTM で修正されているかどうか知りたいですか?

基本的にそれは述べています(EF 4 Self Tracking Entities経由で見たのは期待どおりに機能しません

Self-Tracking Entity テンプレートの生成されたエンティティ コードをクライアントで再利用するようにしてください。Visual Studio またはその他のツールで [サービス参照の追加] によって生成されたプロキシ コードを使用すると、ほとんどの場合は問題ないように見えますが、エンティティが実際にはクライアントでの変更を追跡していないことがわかります。

私は Add Service Reference の使用に非常に慣れており、過去には常にうまく機能していましたが、もちろん STE (自己追跡エンティティ) は使用していませんでした。この問題は、VS 2010 RTM と STE テンプレートでまだ明らかですか?

サービスを追加する代わりにコードを介してプロキシを作成すると、すべてのクラスが作成されませんか?

どんな助けや洞察も本当に感謝しています

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

entity-framework-4 - EF4 が現在 Self Tracking Entity (STE) を水和処理中であるかどうかを知る方法はありますか?

EF 4 STE パブリック ゲッターとセッターでカスタム ロジックを実行する必要があります。ただし、EF が現在エンティティをハイドレートしていない場合にのみ、このカスタム ロジックを実行したいと考えています。

EF が現在、私の代わりに STE エンティティにハイドレートを行っているかどうかを判断するためにチェックできる、組み込みのフラグ、ステータス、またはオブジェクトの状態はありますか?

私は遅延読み込みを行っていないので、すべてのデータ読み込みを 1 回で実行します。エンティティ T4 テンプレートを変更してインフラストラクチャを追加し、このようなものを自分で追跡する必要がないことを願っています。

ありがとう、ネイト

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

c# - 自己追跡エンティティ セットと変更の比較

大学のプロジェクトとして .net アプリケーションを作成していますが、自己追跡エンティティ セットに問題があります。レコードを選択し、wcf サービスを介して渡し、いくつかの変更を加えて、サーバーに再度渡します。何が変更されたかを比較したいので、コンテキストから同じレコードをもう一度選択して (これは古い値を持つレコードです)、比較します。次に、サービスを介して渡されたエンティティとコンテキストで ApplyChanges を呼び出したいと比較した後、エラーが発生しました。

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

同じエンティティを2回ロードしたためだと思います(変更前と変更後)。変更を比較するより良い方法はありますか (別の db テーブルで変更履歴を作成する必要があります)? また、2 つのクライアントが同じレコードを取得し、最初のクライアントがそれを変更して db に保存したい場合にも、このエラーが発生しませんか? 私は.net 4.0を使用しています。