Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C上的LINQ向SQL Server数据库插入值_C#_Sql Server_Linq - Fatal编程技术网

C# 使用C上的LINQ向SQL Server数据库插入值

C# 使用C上的LINQ向SQL Server数据库插入值,c#,sql-server,linq,C#,Sql Server,Linq,我有这样的代码 MsCustomer mc = new MsCustomer { CustomerID=idBox.Text, CustomerName=nameBox.Text, CustomerGender=gender, CustomerPhone=phoneBox.Text, CustomerAddress=addressBox.Text }; dc.MsCustomers.InsertOnSubmit(mc); dc.SubmitCha

我有这样的代码

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再次插入它时,它说不能创建重复的密钥ID

你们能帮帮我吗?这个代码怎么了

这是我写的

  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;
        }
    }

您的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");

如果您被告知第二次尝试插入一个副本,那么显然第一次插入了数据。@jmcilhinney是的,它说我尝试插入一个副本密钥,但当我生成id时,客户id仍然是CS003,它应该是CS004,因为CS003已经插入。我试图将copy to output目录更改为copy always,但没有效果,很抱歉英语不好:那么您的generateID方法就不起作用了。我们对这种方法一无所知,所以我们必须通灵才能知道它到底出了什么问题。@jmcilhinney谢谢你的关注,我更新了我的帖子,我已经写了generateIyes,我写了一个代码,就像你以前写的一样,但是插入不起作用,所以我认为当我把generateid放在submitchanges下时,数据库会被刷新。哈哈哈,我是一个初学者,对此很抱歉。