問題タブ [graphdiff]

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

entity-framework - GraphDiff により、saveChanges() の後にエンティティの ID が設定されない

レコードの作成に graphDiff を使用すると、saveChanges() が呼び出された後、新しい ID がエンティティに戻されません。ここのgithubレポに記録されています-https ://github.com/refactorthis/GraphDiff/issues/144しかし、レポはそれほどアクティブではないようです。これを機能させます。

ただし、どのように機能する必要があるかについては、作成の場合、qualification.Id は常に 0 です。更新の場合、それは正しい ID です。

私の現在の回避策は、作成にグラフ差分を使用しないことですが、これは理想的ではありません。

ありがとう

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

expression-trees - GraphDiff: 「カスケーディング」所有コレクション

GraphDiff (NuGet で利用可能な最新バージョン) を使用して、それほど難しくないと思われるエンティティ モデルを処理しようとしています。次のようなモデルを考えてみましょう:

A のインスタンスを更新している場合 ( aEntityと呼びます)、次のことができます。

また、B を個別に更新したい場合もあります。

したがって、次のように、プロパティを導入することで変更を「カスケード」できると考えました。

...そして、それを両方のシナリオで次のように使用します。

B を更新するだけでは問題なく動作しますが、A を更新すると式の土地に落ちます。

GraphDiff でマッピングを共有する方法はありますか?

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

c# - 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした

EF での更新中に次のエラーが発生します。

操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。

上記のエラーの原因となっている外部キー プロパティを見つける一般的な方法はありますか?

[アップデート]

上記のエラーの原因となる次のコードの 1 つのケース (切断された環境で作業していたので、以前graphdiffはオブジェクト グラフを更新していました) を実行したい場合_uow.Commit();:

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

c# - プロキシ生成を無効にして AsNoTracking を使用するのはいつですか?

私の WebApi プロジェクトでは、EF6 を使用し、Uow および一般的なリポジトリ パターンに従います。また、モデルを dto にマッピングし、その逆も行います。

現在、作成時に次のように設定していますdbContext

AsNoTrackingまた、データベースからデータをフェッチするときにも使用します。

データベースを更新するとき、私は dbContext を直接使用して、小さなエンティティ (つまり、関係がない) を処理するときにエンティティをアタッチしています。複雑なエンティティ (つまり、関係がある) には GraphDiff を使用します。

プロキシと追跡を有効にし、無効にしても、DB に送信される SQL ステートメントには、実際に変更された列だけではなく、テーブルのすべての列が含まれていることに気付きました。

ただし、GraphDiff は変更を DB に保存する前にエンティティを再度ロードしています。この場合の SQL ステートメントには、すべての列も含まれています。これは正しい動作ですか?

私のシナリオでは、切り離されたエンティティを扱っているので、プロキシと追跡を無効にしても安全ですか?

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

c# - 保存時に 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした

GraphDiffを使用して切り離されたオブジェクト グラフを更新します。親とその子を保存するときに上記の例外が発生します。

モデルとマッピングは次のとおりです。

挿入と更新の場合、リポジトリに次のメソッドがあります。

私は次のことを行います:

  1. 新しいグループを追加し、保存してリロードします
  2. ユーザーをグループに追加し、保存してリロードします
  3. 2 番目のユーザーを追加し、保存してリロードします
  4. 3 番目のユーザーを追加し、保存を試みます -> 例外がスローされます

デバッグ中、追加されるユーザー エンティティの状態は常にデタッチされ、新しいエンティティに対して と の両方が 0 に設定されますGroupIdId追加された最初の 2 人のユーザーは正常に保存されます。ただし、3 番目のものでは、例外がスローされます。

いつも同じ方法で保存しているのに、うまくいかないのはなぜですか? それは問題ですEFGraphDiff、この問題を解決する方法はありますか?

ここSOおよび他の場所でのほとんどの質問と関連する回答はすべて、子エンティティが削除されている状況を扱っています。これは、私の特定のシナリオには当てはまりません。

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

c# - GraphDiff を使用して所有エンティティを 2 レベルの深さで削除する

MVC プロジェクトで最初に Entity Framework コード (バージョン 6) と GraphDiff を使用しています。

データベース内のいくつかのテーブルをマップするエンティティがいくつかあります。

CommunicationPlansを持つ多くCommunicationTopicの sを作成してContributingMember集約 root を保存するとCommunicationPlan、GraphDiff はすべてのレコードを作成し、それらをデータベースに関連付けます。(私が正確に望むように)

問題 既存
の の 1 つを削除しようとすると、このトピックはデータベースから削除されます (必要に応じて) 。であり、データベースに存在します。CommunicationTopicCommunicationPlanContributingMemberCommunicationTopic

ContributingMemberNull 値を受け入れないように外部キーを構成すると、次の例外が発生します。

操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。

質問ContributingMember親が削除されたときに GraphDiff が s レコードを削除するようにエンティティを構成するにはどうすればよいCommunicationTopicですか?