我有一个新手问题。
我尝试更新表的一行,特别是使用linq使用主键值。
var mytab = new Customer();
mytab.FirstName = mymodel.FirstName;
mytab.LastName = mymodel.LastName;
mytab.CustomerId = mymodel.CustomerId;
db.AddToCustomer(mytab);
db.SaveChanges()
这只会添加一个带有新ID的新行。单步执行代码会显示“mymodel”正在传递正确的值,并带有我要更新的名字或姓氏。
mymodel.CustomerId是我要更新的记录的正确ID,但SQL事件探查器显示我没有更新任何内容。我需要使用.First吗?
答案 0 :(得分:7)
您的代码会创建新行。要进行更新,首先需要从数据库中选择您的客户ID,然后更新:
var mytab = db.Customers.First(g=>g.CustomerId == mymodel.CustomerId);
mytab.FirstName = mymodel.FirstName;
mytab.LastName = mymodel.LastName;
db.SaveChanges()
答案 1 :(得分:0)
试试这个:
db.Customer.First(x=> x.CustomerId == mymodel.CustomerId).FirstName = mymodel.FirstName;
db.Customer.First(x=> x.CustomerId == mymodel.CustomerId).LastName = mymodel.LastName;
db.SaveChanges();
或者:(我更喜欢这个!)
db.Entry(mymodel).State = EntityState.Modified;
db.SaveChanges();