Назначьте один ко многим без выполнения запроса SELECT - PullRequest
0 голосов
/ 24 января 2019

Допустим, у нас есть:

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' 

(предпочтительно с использованием лямбда-кода)

Спасибо!

1 Ответ

0 голосов
/ 24 января 2019

Попробуйте обновить его, как показано ниже.Сначала создайте объект с назначением действительного 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();

Надеюсь, эта ссылка будет полезна Как обновить только одно поле с помощью Entity Framework?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...