Предполагая, что у меня есть объект, который имеет переход от одного ко многим к другому объекту.Например:
public class Person {
public int Id {get; set;}
public String Name {get; set;}
public ICollection<PhoneNumber> PhoneNumbers {get; set;}
...
}
public class PhoneNumber {
public int Id {get; set;}
public String number {get; set;}
public int PersonId {get; set;}
public Person PersonNavigation {get; set;}
}
Если я хочу обновить имя человека и одновременно добавить несколько номеров к номеру телефона этого человека или удалить несколько номеров, например:
Person person = db.Set<Person>().SingleOrDefault(x=> x.Id == 1);
person.Name = "James";
deleteOneNumber = person.PhoneNumbers.FirstOrDefault(x=> x.number == "555");
person.PhoneNumbers.Remove(deleteOneNumber);
foreach(var number in new String[] {"123","456"}){
person.PhoneNumbers.Add(new PhoneNumber{ Number = i});
}
Как именно я должен определить для структуры, чтобы применить все изменения?В соответствии с документацией EF Core, метод Update
изменит состояние всех объектов на Modified
, тогда как Add
изменит их на Added
.В случае, если я использую здесь метод Modify
, в отношении того факта, что вновь добавленные номера не существуют в базе данных, они не могут быть изменены.
Редактировать:
Предположим, что это отдельный сценарий.