在c#上使用LINQ向SQL Server数据库插入一个值

本文关键字:插入 一个 数据库 Server LINQ SQL | 更新日期: 2023-09-27 18:12:17

我有一个这样的代码

MsCustomer mc = new MsCustomer
{
     CustomerID=idBox.Text,
     CustomerName=nameBox.Text,
     CustomerGender=gender,
     CustomerPhone=phoneBox.Text,
     CustomerAddress=addressBox.Text
};
dc.MsCustomers.InsertOnSubmit(mc);
dc.SubmitChanges();                
MessageBox.Show("Insert Success");
generateID();

当我执行程序时,数据并没有真正插入到SQL Server数据库中,所以ID不会生成。如果代码在数据库上是CS003,它仍然是CS003。但是在应用程序中它已经插入了,所以当我再次插入值为CS003的时候它说不能创建重复的key ID

你们能帮帮我吗?这段代码有什么问题?

下面是我在generateID()上写的

  private string generateID()
    {
        try
        {
            var ID = (from x in dc.MsCustomers
                      orderby x.CustomerID descending
                      select x).First();
            int substring = int.Parse(ID.CustomerID.ToString().Substring(2)) + 1;
            string temp = "CS" + String.Format("{0:000}", substring);
            return temp;
        }
        catch (Exception)
        {
            string first = "C0001";
            return first;
        }
    }

在c#上使用LINQ向SQL Server数据库插入一个值

您的generateID()方法完全有可能完美地工作。在你的代码中没有意义的是你如何使用它。

将数据插入数据库后,只需调用它。它返回一个字符串和-什么都没有。也许你打算改变idBox.Text属性的值,然后插入这个值,但是你没有,我们不知道,所以我假设你想要generateID()为你的实体生成ID,在这种情况下,idBox本身是过时的。在我看来,让用户选择数据的主键/id几乎从来都不是一个好主意。

你可能想要完成的事情是这样的:

MsCustomer mc = new MsCustomer
{
     /* new line */
     CustomerID = generateID();
     CustomerName=nameBox.Text,
     CustomerGender=gender,
     CustomerPhone=phoneBox.Text,
     CustomerAddress=addressBox.Text
};
dc.MsCustomers.InsertOnSubmit(mc);
dc.SubmitChanges();                
MessageBox.Show("Insert Success");
相关文章: