2011-03-11 47 views
2

我目前正面临着一个旧项目的奇怪问题。该项目使用FormView编辑数据。 FormView绑定到LinqDataSource。在更新编辑对象后,我确实收到了一个LinqDataSource抛出一个ChangeConflictException,原因不明

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" ... 

的更新是由ImageButton的提出:

能有什么我确实要解决这些问题。看来不是每一行都受到这个影响。几个小时前,我用另一个web应用程序连续更改了一个值。从那以后,我重建并清理了我目前几次遇到问题的Web应用程序,但这并没有改变。

其实我正在寻找一个“DisableConcurrency”属性,我可以设置为false,但不幸的是,LDS不提供这样的事情。

有什么建议吗?

回答

1

好的,我找到了一个可行的解决方案。似乎没有可能在LDS上设置“DisableConcurrency”。但我可以修改LinqToSql表定义。我将表'firmendatens'中的每个列的更新检查属性更改为'从不'

相关问题