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

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

我正在创建一个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
}

请帮忙,我是初学者:)

c# sql-server visual-studio
1个回答
0
投票

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

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

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