在 linq 中更新单行



我正在尝试更新表的单行,特别是使用 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 事件探查器显示我没有更新任何内容。 我需要使用 .第一?

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

var mytab = db.Customers.First(g=>g.CustomerId == mymodel.CustomerId);
 mytab.FirstName = mymodel.FirstName;
 mytab.LastName = mymodel.LastName;
 db.SaveChanges();

试试这个:

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();

最新更新