让我们说一个:
class Zoo{
Id;
Name;
List<Animal> Animals;
}
class Animal{
Id;
Name;
ZooId;
}
通常我会
var zooId=1;
var animalId=1;
var animal = db.Animals.FirstOrDefault(x=>x.Id==animalId);
animal.ZooId=zooId;
db.SaveChanges();
如果我错了,请纠正我,但是ef.core会先运行Select查询,然后运行更新查询。
有没有一种方法可以编写将产生单个SQL查询的代码,如:
'Update Animal Set ZooId=1 where Id=1'
(最好使用lambda代码)
谢谢!
答案 0 :(得分:1)
尝试如下更新。首先通过分配有效的animalId
创建对象,并将ZooId
设置为您的要求。使用Property(x => x.ZooId).IsModified = true;
只会更新ZooId
。
var animal = new Animal()
{
Id = 1,
ZooId = 1
}
db.Animals.Attach(animal).Property(x => x.ZooId).IsModified = true;
db.SaveChanges();
希望此链接对How to update only one field using Entity Framework?有帮助