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