Это модель проверки DbContext
, которая, по-видимому, жалуется.Таким образом, одним из решений было бы отключить эту проверку:
dbContext.Configuration.ValidateOnSaveEnabled = false;
Другой вариант - ввести свойство внешнего ключа:
public class Person
{
public int Id {get;set;}
public String Name {get;set;}
public int AddressId {get;set;}
public Address Address {get;set;}
/*More props*/
}
Вы можете опустить атрибут [Required]
здесьпотому что EF обнаружит отношения, как того требует соглашение (из-за ненулевого свойства FK).Это также работает с включенной проверкой.
Поведение немного сбивает с толку, так как EF не отправляет изменение столбца FK в базу данных, поэтому на самом деле нарушения ограничений нет, и команда Update выполняется нормально.Я предполагаю, что валидация просто проверяет состояние модели в памяти (недопустимо, потому что Address
имеет значение null), а не состояние, которое будет иметь модель в базе данных при выполнении SaveChanges
(допустимо, потому что FK установлен правильно).