2011-07-23 10 views
1

私は自分のウェブサイトでこれらを入手し続けており、訪問者も同様に定期的に報告しています。ページを更新すると常に修正されます。ここで私は、代表的なもののために、サーバから得た電子メールレポート:Linq競合エラー

でエラーが発生しました:http://www.scirra.com/ReleaseView.aspx?rtitle=r49エラー メッセージ:行見つからないか、または変更されません。スタックトレース:LoggedInUser..ctorで System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) で System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)で()MasterPages_Main.Page_Init(オブジェクト送信者、で System.WebのでSystem.Web.UI.Control.InitRecursive(コントロールのNamingContainer)で System.Web.Util.CalliHelper.EventArgFunctionCaller(のIntPtr FP、オブジェクト O、オブジェクトT、のEventArgs電子)で のEventArgs e)の。 UI.Control.InitRecursive(Control namingContainer): System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)

これは、行番号や他の何かをあまり役に立ちません。問題のページは何も複雑ではありません。

アイデア?それは私が再現することができたエラーではない、それはちょうど定期的に起こっている。

+2

同時実行性の問題ですか?エラーが発生しているコードを投稿できますか? – Tim

+0

このページの更新はありますか?訪問のリクエストはありますか?どちらかのページで、またはトリガーおそらく? –

答えて

2

疑わしいLINQ To SQL .dbmlがデータベースと同期していません。モデルが古いか、本番データベースが.dbmlの作成時と同じではありません。列が変更されましたか?おそらく、列のnullableステータスが変更されていますか?

問題のテーブルを削除し、.dbmlデザイン画面から追加してみてください。複数の環境(dev/test/prod)を持っているかどうかは不明ですが、本番データベースに対してこの.dbmlの変更を行い、アプリケーションを再デプロイしてください。

おそらく、テーブルとdbmlエンティティが期待通りに一致するかどうかを確認してください。 Another problem showing the same symptom。すべてのDateTime列と、並行性チェックのためにこれらの列/プロパティを「Never」に設定できるかどうかも考慮してください。

+0

私はそれがすべてsyncdうまくいると確信していますが、とにかくそれを再現します、これは実際にはページをリフレッシュしてもそれを修正するように見えますか? –

1

あなたが更新しようとしている行が古くなっています(データベースの現在の行がデータベースから取得した行と一致しません)。 'Conflictmode failureMode'のデフォルトは、競合が発生した場合に例外を発生させることです。 this msdn pageを参照してください。

これらの行の古いデータで終わる理由を調べる必要があります。それは何かか他の誰かによって変更されました。あなたはデータをキャッシュしていますか?あなたはウェブファームで動いていますか? .... this pageはあなたがそれに対処する方法を記述していると思います。

+0

ありがとうございます。キャッシングやWebファームがないと、同じレコードが同時に更新されている可能性がありますか? –

+0

私はより良いリンクで答えを編集しました。また、変更された内容をどのように検出できるかも示しています。私はlinqをsqlにすることはあまりありませんので、データベースからどのように読み込み/キャッシュの行に移動するのかよくわかりません。これを同期させないためには、同じ行を2つの異なるオブジェクトに読み込んだ後、最初と最後を編集/保存してから2番目のオブジェクトを保存する必要があります。 – Eddy

+0

別のプログラム/ SQLジョブ/任意のコードがWebアプリケーションの外部からデータベースを変更する場合、Ahhと別の方法があります – Eddy