2

現在、古いプロジェクトで奇妙な問題に直面しています。プロジェクトは FormView を使用してデータを編集します。FormView は LinqDataSource にバインドされています。編集したオブジェクトを更新すると、

System.Data.Linq.ChangeConflictException  - Row not found or change

例外。私はしばらくグーグルで検索しましたが、これまでに読んだ投稿から、これは同時実行の問題であることがわかりました。その間にデータを更新する誰かが本当にいるのであれば、私は同意しますが、誰もそうしません。

LinqDataSource は次のようになります。

<asp:LinqDataSource ID="ldsFirma" runat="server" ContextTypeName="mynamespace.myDataContext" 
    EnableUpdate="True" TableName="Firmendatens" Where="Kennummer == @Kennummer"
    OnSelecting="ldsFirma_Selecting" StoreOriginalValuesInViewState="False" OnUpdating="ldsFirma_Updating">
    <WhereParameters>
        <asp:Parameter Name="Kennummer" Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>

これは FormView の開始タグです。

<asp:FormView ID="fvFirma" runat="server" DataKeyNames="Kennummer" DataSourceID="ldsFirma" ...

Update は ImageButton によって発生します。

これらを修正するにはどうすればよいですか。すべての行がこれによって影響を受けるわけではないようです。数時間前に、別の Web アプリケーションで連続して値を変更しました。それ以来、私は現在問題を抱えている Web アプリケーションを何度か再構築してクリーンアップしましたが、それでも状況は変わりません。

実際には、false に設定できる「DisableConcurrency」プロパティを探していますが、残念ながら LDS はそのようなものを提供していません。

助言がありますか?

4

1 に答える 1

1

わかりました、私は実行可能な解決策を見つけました。LDSで「DisableConcurrency」を設定することはできないようです。しかし、LinqToSqlテーブルの定義を変更することはできます。テーブル「firmendatens」のすべての列のUpdateCheckプロパティを「Never」に変更しました

于 2011-03-11T15:03:29.050 に答える