2009-09-09 55 views
0

我有一个类型化数据集,并且其中我打电话TableAdapter.Update(DataRow),执行的SQL包括数据库的主键列的更新。防止类型化数据集更新PK柱

不幸的是,当这个代码复制的数据库上运行时,PK列具有rowguid属性集,我也得到了以下错误:

System.Data.SqlClient.SqlException: Updating columns with the rowguidcol property is not allowed. The transaction ended in the trigger. The batch has been aborted. at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount) at System.Data.Common.DbDataA...

如何防止TableAdapter的自更新此列(价值是一样的)?

+0

在您的类型化的DataSet是竟标作为主键 – Gratzy 2009-09-09 16:26:17

回答

2

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

+0

我完全*不想*它来更新PK的主键列 - 这是自动生成的SQL,而不是我。尽管你编辑它很好。唯一的麻烦是,如果/通过设计师重新生成课程,编辑将会丢失。 – 2009-09-09 16:30:29

0

如果列实际上是标记为在类型化的DataSet中的主键生成的更新语句中的汽车不应该试图更新它。我会看看设计师,并仔细检查它是否是主键。

+0

是的=我查过了,看起来不错。我可能会尝试从头开始重新生成它,并查看它是否有所作为。 – 2009-09-09 20:56:38