1
//SelectUtilitiesCheckbox is bound to a complete list of the Utilitie_companies table
foreach (ListItem x in SelectUtilitiesCheckBox.Items)
{
    Select_Utility SU = rows.Where(r => r.Utility_Id == Convert.ToInt32(x.Value)).FirstOrDefault();
    bool initialValue = SU != null;

    if (x.Selected == true && initialValue == false)
    {
        // New qualification added so save it
        Select_Utility NewSelectUtility = new Select_Utility();
        NewSelectUtility.WorkId = tempWorkSiteId;
        NewSelectUtility.Utility_Id = System.Convert.ToInt32(x.Value);

        context.Select_Utilities.InsertOnSubmit(NewSelectUtility);
    }
    else if (x.Selected == false && initialValue == true)
    {
        // Removed old qualification so remove it in the database
        context.Select_Utilities.DeleteOnSubmit(SU);
    }
}

context.SubmitChanges();

私のQは-LINQを使用しています-送信時に挿入は正常に機能しますが、deleteOnSubmitを使用しようとすると

エラー:ChangeConflictEceptionはユーザーコードによって処理されませんでした-行が見つからないか、変更されていません。

context.submitに到達したら、context.Select_Utilities.DeleteOnSubmit(SU);でbreakpoit'Su'を使用します。削除する正しいレコードが含まれています

理由について何かアイデアはありますか?

4

1 に答える 1

3

おかげで...

System.Data.Linq.ChangeConflictException:行が見つからないか変更されていません

問題を解決しました。

問題は次のとおりです。Dbのフィールドの1つはヌル可能でしたが、DBMLファイルではヌル可能ではありませんでした。それに合わせてレコードを変更すると、問題が解決しました。

于 2013-03-08T10:57:53.227 に答える