更新linq中的单行

use*_*341 3 c# sql linq

我有一个新手问题.

我试图更新表的一行,特别是使用linq使用主键值.

 var mytab = new Customer();
 mytab.FirstName = mymodel.FirstName;
 mytab.LastName = mymodel.LastName;
 mytab.CustomerId = mymodel.CustomerId;

 db.AddToCustomer(mytab);
 db.SaveChanges()
Run Code Online (Sandbox Code Playgroud)

这只是添加了一个带有新id的新行.单步调试代码会发现'mymodel'正在传递正确的值,并带有我要更新的名字或姓氏.

mymodel.CustomerId是我要更新的记录的正确ID,但SQL事件探查器显示我没有更新任何内容.我需要使用.First吗?

And*_*bal 9

您的代码创建了新行.要进行更新,您需要先从数据库中选择您的客户ID,然后更新:

var mytab = db.Customers.First(g=>g.CustomerId == mymodel.CustomerId);
 mytab.FirstName = mymodel.FirstName;
 mytab.LastName = mymodel.LastName;
 db.SaveChanges()
Run Code Online (Sandbox Code Playgroud)