我有一个类型化数据集,在我调用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更新此列(值是相同的)?
答案 0 :(得分:2)
您可以在DataSet
设计器中手动编辑为update命令创建的SQL。只需单击适配器,然后找到UpdateCommand
。您是否有更新主键的原因?如果不是(并且你不应该,如果可能的话),那么你应该从命令中删除它。
答案 1 :(得分:0)
如果您的列实际上被标记为键入的DataSet中的主键,则自动生成的更新语句不应尝试更新它。我会看看设计师并仔细检查它实际上是主键。