PRIMARY KEY约束 'PK_EMPLOYEE' 的相关规定。不能在对象中插入重复键

问题描述 投票:0回答:1

我试图更新的记录,但它展示了“违反主键约束的,不能在对象中插入/表中的重复键”。此错误听起来像“添加员工块”,而我的更新记录被调用。

如果我放弃主键将其插入,而不是更新另一个与前一个记录(更新)!注:已经看了很多问题解决了!

static public void UpdateEmployee(Employee employee)
{
    String conString = ConfigurationManager.ConnectionStrings["EMPLOYES"].ConnectionString;

    SqlConnection conn = new SqlConnection(conString);
    using (conn)
    {
        SqlCommand cmd = new SqlCommand("UpdateEmployeeRecord", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@EmployeeID", SqlDbType.NVarChar, 8).Value = employee.EmployeeID;
        cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 50).Value = employee.FirstName;
        cmd.Parameters.Add("@LastNmae", SqlDbType.NVarChar, 50).Value =     employee.LastName;
        cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 50).Value = employee.Email;
        cmd.Parameters.Add("@Telephone", SqlDbType.NVarChar, 50).Value = employee.Telephone;

        conn.Open();
        cmd.ExecuteNonQuery();
    }
}

static public void AddEmployee(Employee employee)
{
    String conString = ConfigurationManager.ConnectionStrings["EMPLOYES"].ConnectionString;

    SqlConnection conn = new SqlConnection(conString);
    using (conn)
    {
        SqlCommand cmd = new SqlCommand("AddNewEmployee", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@EmployeeID", SqlDbType.NVarChar, 8).Value = employee.EmployeeID;
        cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 50).Value = employee.FirstName;
        cmd.Parameters.Add("@LastNmae", SqlDbType.NVarChar, 50).Value = employee.LastName;
        cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 50).Value = employee.Email;
        cmd.Parameters.Add("@Telephone", SqlDbType.NVarChar, 50).Value = employee.Telephone;

        conn.Open();
        cmd.ExecuteNonQuery(); //(X) Exception is here
        }
    }

过程中使用

ALTER PROCEDURE [dbo].[UpdateEmployeeRecord]
(
    @EmployeeID NVARCHAR(8),@FirstName  NVARCHAR(50),
@LastNmae NVARCHAR(50),@Email NVARCHAR(50),
@Telephone Nvarchar(50)
)
AS
BEGIN
    UPDATE [DBO].[EMPLOYEE] SET  FirstName = @FirstName,
            LastName = @LastNmae, Email = @Email, Telephone = @Telephone
        WHERE EmployeeID = @EmployeeID 
    END 

我期待该记录将被更新,但它是某种违反了主键约束。

c# ado.net sql-server-2014-express
1个回答
0
投票

在程序@LastNmae是错误使用@LastName但没有影响

© www.soinside.com 2019 - 2024. All rights reserved.