我无法在Visual Studio的列中看到变量的附加值,但我在SQL服务器中看到它们。为什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我无法在Visual Studio的列中看到变量的附加值,但我在SQL服务器中看到它们。为什么?相关的知识,希望对你有一定的参考价值。

我正在创建一个Visual Studio项目,用于从MS SQL服务器添加和读取客户。我无法看到通过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;

    }

我已将其与SQL类连接:

public static class CustomerClass
{
    #region

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

        }

    }
    #endregion
}

请帮忙,我是初学者:)

答案

问题是你创建的每个人都会有一个id为0,并且因为数据库中的ID列没有标记为身份,所以SQL Server会尝试在每个人插入时插入值0,所以第一次成功并且插入id = 0的新人,但它会第二次失败,因为已经有一个id为0的人需要将pk标记为身份,这样SQL Server将自动处理id值,你甚至不会需要从你的C#代码中发送它的值

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

以上是关于我无法在Visual Studio的列中看到变量的附加值,但我在SQL服务器中看到它们。为什么?的主要内容,如果未能解决你的问题,请参考以下文章

服务结构无法在 Visual Studio 中看到容器模板

Visual Studio 无法识别环境变量的更改

从属项目在 Visual Studio 的引用中无法看到库中的标头

Visual Studio - VB - Windows 窗体项目 - 未声明“变量”。可能无法访问

Visual Studio 不允许我使用某些变量名

Visual Studio 2019 无法在 Watch 窗口中查看应用级别定义的静态变量