这个异常是由于在向数据库中插入数据时,尝试为标识列(即自增长列)插入了一个显式值。在默认情况下,标识列是自动增长的,因此不需要为其提供值。如果您需要为标识列提供值,则必须在插入数据之前将 IDENTITY_INSERT 设置为 ON。

以下是一个示例代码,演示如何在 C# 中将 IDENTITY_INSERT 设置为 ON:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    SqlCommand command = new SqlCommand("INSERT INTO bookInfo (id, title, author) VALUES (@id, @title, @author)");

    // 将 IDENTITY_INSERT 设置为 ON
    command.CommandText = "SET IDENTITY_INSERT bookInfo ON";
    command.ExecuteNonQuery();

    // 插入数据
    command.Parameters.AddWithValue("@id", 1);
    command.Parameters.AddWithValue("@title", "The Great Gatsby");
    command.Parameters.AddWithValue("@author", "F. Scott Fitzgerald");
    command.ExecuteNonQuery();

    // 将 IDENTITY_INSERT 设置为 OFF
    command.CommandText = "SET IDENTITY_INSERT bookInfo OFF";
    command.ExecuteNonQuery();
}

在这个示例中,我们首先将 IDENTITY_INSERT 设置为 ON,然后插入了一个具有显式 ID 值的记录,最后将 IDENTITY_INSERT 设置为 OFF。请注意,ID 值必须是唯一的,否则会引发主键冲突异常。

SqlException 当 IDENTITY_INSERT 设置为 OFF 时不能为表 bookInfo 中的标识列插入显式值。c#代码

原文地址: https://www.cveoy.top/t/topic/bdt3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录