0

Azure でライト スイッチを使用しています。

[保存] ボタンをクリックしてレコードの列を変更した後、

「ストア更新、挿入、または削除ステートメントは、予期しない数の行 (0) に影響を与えました。エンティティが読み込まれてから、エンティティが変更または削除された可能性があります。ObjectStateManager エントリを更新してください。

開発マシンで VS 2012 を使用して、このライト スイッチ アプリをデバッグします。同じレコードの保存列を変更して保存すると、問題なく動作し、エラーは発生しません。

このフォーラムの誰かがこれを引き起こす原因を知っていますか? どうすれば回避できますか?

Azure マシンには、私の開発マシンと同じバージョンの EF がないと思われます。しかし、ライトスイッチプロジェクトでは、クライアントとサーバーの両方の参照で、EFがそこで参照されていることがわかりませんでした。そのため、マシン上の EF dll を Azure マシンに移行する方法がわかりません。

誰かが私にこれについて何か提案をしてもらえますか?

ありがとう

クリス

4

2 に答える 2

0

通常、これはオプティミスティック コンカレンシーの副作用です。この記事では、Lightswitch: LightSwitch 2012 Concurrency Enhancementsでそれについてのアイデアを得ることができます。

開発マシンで動作していて Azure で動作していない場合、運用データベースに何か問題があると思います。

また、エンティティ フレームワークを確認することもできます: 予期しない数の行 (0) に影響を与えました

于 2013-02-15T05:13:25.227 に答える
0

挿入/更新トリガーの代わりに、SQL サーバーが新しい挿入/更新行ごとに IdentityScope を報告しないことがあります。したがって、EF は影響を受ける行の数を認識できません。通常、ID 列を含むテーブルへの挿入/更新の直後に、scope_identity() の選択が行われ、Entity Framework に関連する値が設定されます。トリガーの代わりにこの 2 番目の手順が実行されず、0 行挿入エラーが発生します。

トリガーを挿入前または挿入後に変更したり、最後に次の行を追加してトリガーを微調整したりできます。

select [Id] from [dbo].[TableXXX] where @@ROWCOUNT > 0 and [Id] = scope_identity()

詳細については、このスレッドまたはこのスレッドを参照してください。

于 2013-02-19T00:42:57.597 に答える