Для сложного типа в рамках сущности только с обнуляемыми свойствами, почему что-то вроде следующего требует сложного типа быть создан:Сложных типов обнуляемых значений
[ComplexType]
public class Address {
public string Address1 { get; set; }
}
public class Customer {
[Key]
public int CustomerId {get;set;}
public Address Address {get;set;}
}
Более конкретно, если вы этого не сделаете объявить и указать тип, вы получите значение «Null» для члена, не являющегося nullable. Member: «Адрес». Согласно this question.
До тех пор, пока все свойства комплексного типа имеют значение NULL, почему структура объекта требует экземпляра Address? Поскольку Address1 имеет значение NULL, почему он не может просто предположить это и создать таблицу (и столбец Address_Address1) и нулевое значение в строке, как если бы я создал экземпляр Address с нулевым адресом1?
Или есть атрибут/текущая настройка, которую я могу применить для достижения этого?
Может быть, вы не выделили память для адреса, используя нулевой оператор. –
Это действительно плохая особенность EF. Используя отражение объекта Address, EF может легко определить, какие столбцы создавать при создании таблицы. Для этого не требуется иметь экземпляр адреса от объекта. И при создании/обновлении сущности, если свойство ComplexType было равно null, то чем тяжело устанавливать эти столбцы в базе данных на нуль? Это должно быть легкой возможностью добавить к следующей версии EF IMO. – Ibraheem