阻止Typed DataSet更新PK列

时间:2009-09-09 16:22:59

标签: c# sql primary-key sql-update strongly-typed-dataset

我有一个类型化数据集,在我调用TableAdapter.Update(DataRow)的地方,执行的SQL包括数据库主键列的更新。

不幸的是,当此代码在复制数据库上运行时,PK列设置了rowguid属性,并且出现以下错误:

  

System.Data.SqlClient.SqlException:不允许使用rowguidcol属性更新列。   交易在触发器中结束。批次已中止。     在System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent,BatchCommandInfo [] batchCommands,Int32 commandCount)     在System.Data.Common.DbDataA ...

如何阻止tableadapter更新此列(值是相同的)?

2 个答案:

答案 0 :(得分:2)

您可以在DataSet设计器中手动编辑为update命令创建的SQL。只需单击适配器,然后找到UpdateCommand。您是否有更新主键的原因?如果不是(并且你不应该,如果可能的话),那么你应该从命令中删除它。

答案 1 :(得分:0)

如果您的列实际上被标记为键入的DataSet中的主键,则自动生成的更新语句不应尝试更新它。我会看看设计师并仔细检查它实际上是主键。