C# 我在VisualStudio的列中看不到变量的附加值,但在SQL server中看到了它们。为什么?

C# 我在VisualStudio的列中看不到变量的附加值,但在SQL server中看到了它们。为什么?,c#,sql-server,visual-studio,C#,Sql Server,Visual Studio,我正在制作一个VisualStudio项目,用于从MS SQL server添加和读取客户。无法看到我通过Visual Studio发布的值 以下是SQL代码: create Table Person ( Id int PRIMARY KEY, FirstName varchar (15), LastName varchar (15), TaxNbr int, BirthDate DATETIME, AktivStatus varchar (15), ); 这里是C#的一部分,我正在为客户添

我正在制作一个VisualStudio项目,用于从MS SQL server添加和读取客户。无法看到我通过Visual Studio发布的值

以下是SQL代码:

create Table Person
(

Id int PRIMARY KEY,
FirstName varchar (15),
LastName varchar (15),
TaxNbr int,
BirthDate DATETIME,
AktivStatus varchar (15),
);
这里是C#的一部分,我正在为客户添加新的价值:

private void Button_AddCustomer(object sender, RoutedEventArgs e)
    {


        Person customer = new Person();
        int number;
        customer.FirstName = FirstName.Text.Trim();
        customer.LastName = LastName.Text.Trim();
        if (int.TryParse(TaxNbr.Text, out number) == false) MessageBox.Show("Must add a valid tax number");
        if (number < 0 || number > 999) MessageBox.Show("Invalid Tax Number. Must be between 0 and 999");
        else customer.TaxNbr = number;

        customer.BirthDate = BirthDate.DisplayDate; 
        if (Aktiven.IsChecked == true) customer.AktivStatus = "Aktiven";
        if (Neaktiven.IsChecked == true)
        {
            customer.AktivStatus = "Neaktiven";
        }

        CustomerClass.AddCustomer(customer);
        DialogResult = true;

    }

请帮助,我是初学者:)

问题是,您创建的每个人的id都是0,而且由于数据库中的id列未标记为identity,SQL server将尝试在每个人插入时插入0的值,因此第一次插入成功并插入id为0的新人,但是它第二次将失败,因为已经有一个id为0的人需要将pk标记为标识,这样SQL Server将自动处理id值,而您甚至不需要从您的C代码发送它的值


或者您可以自己管理ID,并确保在此列中不插入任何不推荐的重复值

嘿,在Visual Studio中看不到变量的值是什么意思?另外,当您运行代码并单击按钮时会发生什么?是否向数据库中添加了新客户?是的,但我只能在SQL表中看到它。当我尝试在Visual Studio中添加时,我收到以下消息:“System.Data.SqlClient.SqlException:'违反主键约束'PK_uPerson_u3214EC070A523E0B'。无法在对象'dbo.Person'中插入重复的键。重复的键值为(0)。该语句已终止。“”看起来您正试图反复添加ID=0的客户。您应该将ID列设置为“自动递增”,并在SQL中添加“设置标识”\u INSERT Person on,但我现在得到以下信息:“System.Data.SqlClient.SqlException:'当identity_insert设置为OFF时,无法在表'Person'中为identity列插入显式值。”“如我所说,如果您将ID列设置为identity,SQL server将处理此列的插入,并为您创建一个序列,以便您可以按升序(如1、2、3、4、5、6等)拥有您的ID,您只需不将ID值从C#代码发送到数据库即可
public static class CustomerClass
{
    #region

    public static void AddCustomer(Person customer)
    {
        using (CustomerDataContext conn = new CustomerDataContext())
        {
            conn.Persons.InsertOnSubmit(customer);
            conn.SubmitChanges();

        }

    }
    #endregion
}