C#学习教程:表'Table'中标识列的显式值只能在使用列列表且IDENTITY_INSERT为ON时指定usedandIDENTITY_INSERTisONExplicitvaluesforidentitycolumns有谁知道这个错误(Explicitvaluesforidentitycolumnsintable'HD_AANVRAAG_FASE'canonlybespecifiedwhenusingacolumnlistandIDENTITY_INSERTisON.描述:未处理的异常在执行当前Web请求期间发生。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。异常详细信息:System.Data.SqlClient.SqlException:只能指定表“HD_AANVRAAG_FASE”中的标识当使用列列表且IDENTITY_INSERT为ON列的显式值时。)意味着?任何帮助表示赞赏。privatevoidInsert2(){SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["HELPDESK_OUTLOOKConnectionString3"].ToString());conn.Open();SqlCommanddCmd2=newSqlCommand("INSERTINTOHD_AANVRAAG_FASEVALUES(@fase_id,@aanvra@status_id,"+"@werknemer_id,@fase_datum)SETIDENTITY_INSERTHD_AANVRAAG_FASEOFF",conn);dCmd2.Parameters.AddWithValue("@fase_id",1);dCmd2.Parameters.AddWithValue("@aanvraag_id",2622);dCmd2.Parameters.AddWithValue("@status_id",15);dCmd2.Parameters.AddWithValue("@werknemer_id",165);dCmd2.Parameters.AddWithValue("@fase_datum","12-12-2001");dCmd2.ExecuteNonQuery();conn.Close();由于您没有明确指定该列,我假设@fase_id被传递到IDENTITY列,错误说您不能这样做,除非您通过IDENTITY_INSERT强制它。通常,您让数据库生成它;为INSERT指定列并省略标识列(并且不要尝试分配值)。INSERT之后的新ID可用作SCOPE_IDENTITY()。您的代码在开头包含SETIDENTITY_INSERTHD_AANVRAAG_FASEOFF但不包含相应的SETIDENTITY_INSERTHD_AANVRAAG_FASEON为什么要明确插入这些?这是同步任务吗?在运行插入之前,您错过了SETIDENTITY_INSERTHD_AANVRAAG_FASEON。这是错误的确切原因。也就是说,很少使用标识值的显式插入——例如,仅当将数据从一个表复制到另一个表时,或者用显式ID初始化新表时。通常您只想从INSERT中省略标识值,这也可以避免错误。以上是C#学习教程:只有在使用列列表且IDENTITY_INSERT为ON时,才可以指定表'Table'中标识列的显式值。分享所有内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
