我有一个使用VS2005 / VS2008 DataSet设计器创建的强类型DataTable。
该表有一个主键列,它是一个guid,由SQL服务器填充。问题是我想在我的DataTable中添加一行(或多行),然后调用DataAdapter.Update方法(传入DataTable)。调用DataAdapter.Update时,我收到一条SQL异常,说我无法在主键列中插入NULL。
如何告诉设计人员这是一个自动生成的列,我不想为新行提供值?我只想要SQL生成的值。
我在这里遗漏了什么,或者这是DataSet设计师的限制吗?
我知道如何使用LINQ to SQL实现这一点,但不幸的是,我没有为此项目提供它。
答案 0 :(得分:2)
可能是其中之一:
对于前两个选项,如果您希望让设计人员使您的结构与数据库保持同步,那么您可以删除列或以编程方式允许null,也许就在“// HACK:”注释旁边解释原因。
答案 1 :(得分:0)
您可能在SQL Server表定义上使用DEFAULT NEWID(),因此问题可能是数据集设计器未将此列视为自动生成。
也许在您的应用程序代码中生成guid可能是一个解决方案?如果没有,那么您可以在数据集中设置默认值,但是您可能还必须更改DataAdapter插入/更新语句,以便不会将此默认值插入到Sql Server表中。
还有一些我不知道的其他解决方案......