2017-10-18 2 views
0

このエラーに関して他の解決策を見てきましたが、私の問題は異なると思います。彼らは動作しないので。不可能なエラー:ストアの更新、挿入、または削除ステートメントが予期しない行数に影響を受けました

私はAzure App Servicesバックエンドを持っています。それはASP.NETとエンティティを使用しています。 いくつかの奇妙な理由により、テーブルの1つに新しいエントリを挿入できません。 これはこの1つのテーブルだけですが、何も変更されていません。私はこのエラーが通常の状況でスローされる理由を理解していますが、変更を保存する時点では何も変わりません。このような単純な

何かが、エラー投げている:私は、デバッガでステップスルー

var client = new Client() { Id = Guid.NewGuid().ToString(), CompanyID = "guid-fk-in-other-table" }; 
context.Clients.Add(client); 
context.SaveChanges(); 

を、context.Clients.Add(クライアント)。行は、実行するのには本当に時間がかかり、出力窓のような役に立たない例外の束を示しています。

Exception thrown: 'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException' in EntityFramework.dll 

をテーブルスキーマは、私のDataObjectと同じです。私は絶望的になり、ここからどのように診断するのか分かりません。どんな助けも信じられないほど高く評価されます!

+0

このテーブルで変更をロールバックするトリガーがありますか?ここにはいくつかの可能性があります。おそらくロックしています...エラーは、私の経験では一般的な「行は更新されませんでした」です。 – Twelfth

+0

Mobile Appsが作成するテーブル以外のトリガーはありません(「更新済み」タイムスタンプの更新を挿入/更新/削除します)。 –

+0

ほとんどの場合、トラブルシューティングのヒントを追加するだけです。残念ながらそれは曖昧なエラーです。 ToString()は有効な値を返します(ハードコードをid = 10101、CompanyID = "guid-fk-in-other-table"にしてください)。あなたは別のツール(テーブルが他の人によってロックされている可能性があります)を挿入できますか?挿入を妨げるFKが違反していますか?(これは明らかにもっと詳細なエラーを返すはずです)?明確な答えは申し訳ありません – Twelfth

答えて

0

まあ、デバッグの数週間後、最終的にこれを考え出しました。

このテーブルには、行レベルのセキュリティが実装されています。何らかの理由で、現在のユーザーがアクセス述語を渡さないと、Entityは行を追加できません。ポリシーを通過することなく、SQLを介して直接行を挿入することができるので、混乱の原因となりました。 Entityがエントリを読み込もうとしていると思いますか?

とにかく、 私はポリシーを削除して、必要に応じて動作しました。彼らが以前に働いた理由は、呼び出し側のアプリケーションがセキュリティポリシーを満たす資格情報をキャッシュしていたためです。一度私はそれらをクリアし、問題が起きた。 デバッガの例外で私がこの結論に導いてくれたことは全くありませんでした。セキュリティポリシーが間違っていたことを指摘する例外は歓迎されていました。

関連する問題