問題タブ [savechanges]

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

asp.net - EntityFrameworkとMVC3:1つ以上の外部キープロパティがnull許容でないため、関係を変更できませんでした

オブジェクトとそのすべての子コレクションを更新するために1つのビューを使用しようとしています(エンティティフレームワークモデルを使用したSQL Serverデータベースの1対多の関係に基づいています)。

AutoMapperを使用するように提案され、それを試して動作させました。(子コレクションを持つモデルにAutoMapperを使用しようとすると、Asp.Net MVC 3でnullエラーが発生するを参照してください)。

しかし、ソリューションを維持するのは本当に難しいです。そして、最初に必要だった単純なものを試してみると、エンティティオブジェクトをモデルとして直接使用して(「コンサルタント」オブジェクト、すべての子コレクションの親)、正しい変更されたすべてのデータを元に戻すことができます。 POST、およびUpdateModelを使用して、子コレクションを含むそれらを取得できます。単純。確かに、UpdateModelは、ここSOのヒントからカスタムモデルバインダーを作成した後にのみ機能しました。

私のカスタムモデルバインダーから:

これが私の簡単なEditPOSTメソッドです:

しかしその後、UpdateModelは機能しました。問題は、次の段階で、コンテキストでSaveChangesを呼び出そうとすると、失敗することです。このエラーが発生します:

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

何が悪いのかわかりません。投稿されたConsultantオブジェクトにすべての正しい値が表示されていますが、データベースに保存できません。この場合のAutoMapperのルート(興味深いツールですが)はうまく機能していませんが、コードが非常に複雑になり、アプリケーションがかなり単純なものになり、維持するのが悪夢になっています。

なぜ私がこのエラーを受け取っているのか、そしてそれを克服する方法について誰かが洞察を提供できますか?

アップデート:

ここでいくつかの投稿を読んで、少し関連しているように見える投稿を見つけました:エンティティフレームワークを使用して、asp.net MVC2からデータベースのモデルを更新する方法は?。これに関連するかどうかはわかりませんが、POST後にConsultantオブジェクトを調べたところ、このオブジェクト自体にentitykeyがあるように見えますが、コレクション内の個々のアイテムにはありません(EntityKeySet = null)。ただし、各アイテムには正しいIDがあります。私はEntityKeyでこれを理解するふりをしていないので、それが私の問題に関係があるかどうか、もしそうなら、それを解決する方法を説明してください...

更新2:

私は自分の問題と関係があるかもしれない何かを考えました:ビューはスティーブンサンダーソンによって説明された技術を使用しています(http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-を参照) list-aspnet-mvc-2-style /)、デバッグすると、UpdateModelがビュー内のコレクション内のアイテムを実際のConsultantオブジェクト内のアイテムと一致させるのに問題があるように見えます。これがこの手法の索引付けに関係しているのではないかと思います。これがそのコードのヘルパーです(私はそれを自分でうまくフォローすることはできませんが、Guidを使用してインデックスを作成します。これが問題になる可能性があります):

しかし、繰り返しになりますが、非表示の入力にはvalue属性にidが含まれているため、これが問題になるとは思わなかったでしょう。UpdateModelはフィールドの名前を調べて、Programs(コレクション)とName(プロパティ)、次にIDの値...?また、更新中に不一致があるようです。とにかく、FireBugから生成されたhtmlもここにあります:

これが問題かどうか誰か知っていますか?もしそうなら、UpdateModelでコレクションを簡単に更新できるようにするにはどうすればよいですか?(POSTの前にビューでアイテムを追加または削除することはできますが、これが最初からこの手法の目的でした)。

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

c# - 変更の保存に失敗しましたが、例外はスローされませんでした

SaveChanges を呼び出している場合がありますが、失敗し、try ブロックからスローされますが、キャッチされません。このようなことは聞いたことがありません。ご協力をお願いいたします。

.net フレームワーク 3.5SP1 を使用して、Visual Studio 2008 で C# を使用しています。

問題のコードは次のとおりです。

SaveChanges 行の前後にログ ステートメントを配置しましたが、直後のステートメントが出力されません。ただし、例外はログに記録されず、データも保存されません。

例外をスローせずにエラーがどのように発生しているかについて、私は正直に困惑しています。私が「キャッチ」していないというエラーをC#が報告している他の方法があるとしか思えません。

誰かがポインタや提案を持っていれば、私はそれを大いに感謝します.

ブルース。

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

c# - EntityFramework 変更を保存する前にエンティティを表示

メソッド ToList を持つ Entity Framework ObjectSet は、保存されたエンティティのみを表示します。つまり、私が電話するとき

次に (SaveChanges を呼び出さずに)

DataGrid には、新しく追加されたエンティティが表示されcontext.Customers.Count()ません (含まれていません)。

これらのエンティティ ( を持つものEntityState = Added) を表示する方法はありますか?

前もって感謝します。

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

c# - EntityFramework 4 を使用したエンティティへの ID の割り当て

エンティティに「デフォルト」の Id 生成サポートを実装したいと考えています。

エンティティを保存するとき、エンティティの id 値がまだ設定されていない場合にのみ、EntityFramework が生成するようにしたいと思います。ID に null 以外のゼロ以外の値が既に含まれている場合は、エンティティをデータベースに保存するときに、そのエンティティ ID を保持したいと考えています。

レガシ データ モデル (古いデータベースから作成された EntityFramework モデル) から新しく作成された (モデル ファースト) EntityFramework モデルにデータを移行しています。旧モデルをA、新モデルをTとしましょう。

通常、新しいモデルを長期間使用するために、保存時に T エンティティに Id を設定する必要があります (それらはすべて int64 です)。

現在、移行元の対応する A エンティティの ID に基づいて、T エンティティ ID を明示的に割り当てています。これは、移行結果を簡単に確認できるようにするためです。

ただし、移行ルーチンで T エンティティの ID を A エンティティと同じ ID に割り当てることはできますが、エンティティを保存した後、ID 値が変更されています。

Tモデルのすべてのエンティティのデフォルトの保存方法をオーバーライドして、保存する前にエンティティにまだ設定されていない場合にのみid値が割り当てられるようにする方法はありますか?

ここで他の EntityFramework/Id の質問をいくつか見てきましたが、私の考えでは、同じことを尋ねているものはありません。

リードをありがとう。

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

c# - ObjectContextEF4.0を渡す

QueriesとContactRepositoryの2つのクラスがあります。

CreateContactAddress()を呼び出すと、SaveChanges()メソッドがクラッシュして次のエラーが発生します。

依存操作の有効な順序を判別できません。依存関係は、外部キーの制約、モデル要件、またはストアで生成された値が原因で存在する可能性があります。

LINQクエリをCreateContactAddress()メソッド自体に移動でき、すべてが完全に機能します。誰かが何が起こっているのか説明できますか?

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

excel-2010 - Excel2010-マクロを含むブックが変更の保存を要求する理由

多くの場合、VBAマクロを含むブックを操作するときに、ブックを保存してすぐに閉じようとすることができます。次に、Excelは変更を保存するかどうかを尋ねます。この動作の原因は何ですか?

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

python - Python、インポートされたモジュールに加えられた変更を保存する

ユーザーが別のクラスから別のメソッドを選択し、.im_func を使用して独自のクラスで使用できる状況があります。以下に例を示します

methodX は、両方のモジュールで異なる方法で実装できます。オブジェクトをインスタンス化すると、 foo1.Class(), methodX from modulefoo2` が使用されます。

私の問題は、変更を foo3.py として新しいソース コード ファイルに保存する方法です。

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

sql-server-2008 - Entity Framework SaveChanges 関数が変更をコミットしない

リストに配置する最初の選択があります。リストを使用して各レコードをループし、特定の条件を満たす場所で、一連の挿入、削除、および更新を実行します。最後に、SaveChanges() メソッドを呼び出して変更をコミットします。

コードは例外を発生させずに実行されますが、変更はデータベースに反映されません。私は運が悪いとウェブを検索しています。

SQL2008 バックエンドで VS2008 を使用しています。

助けてください?

よろしく、GPR。

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

entity-framework - 保存時にオプションの列を無視する

自動生成されたEFを介してフォームからテーブルを更新するときに、編集可能にしたくないためにビューフォームから一部のデータ列を削除した場合、その列はnull値で更新されますが、この動作を回避するにはどうすればよいですか?私はここを読みました:エンティティフレームワーク:モデルからそれを削除する列を無視しますが、これらのデータ列を常に無視したいわけではありません。

感謝!

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

entity-framework - 不要な行を挿入する別の DbContext のエンティティ フレームワーク SaveChanges()

私のスーパーマーケット モデルには、StockItem クラスと、StockItem フィールドを含む Alert クラスが含まれています。

1 つの DbContext ですべての StockItems をフェッチする関数があります。

これらのアイテムを処理し、別の DbContext に新しいアラートを追加する別の関数:

問題は次のとおりです: アラートが保存されると、新しい在庫アイテム (別の ID を持つ) がデータベースに追加されますが、それは既に存在します! 解決策はありますか?