Возможно ли установить объект по умолчанию для объекта Entity?Установка объекта по умолчанию для свойства навигации Entity Framework
Скажем, у меня есть объект Person
, у которого изначально не было требования для Profile
.
Теперь мне нужен Profile
- но существуют существующие объекты, которые в настоящее время не имеют Profile
.
Есть ли способ предоставить объект по умолчанию для этих объектов, когда они будут загружены в будущем, поэтому любой, кто использует объект Person
, может предположить, что Profile
никогда не является нулевым и всегда имеет значение, даже если оно по умолчанию.
Ниже вы можете увидеть, что я пробовал - что создает значение по умолчанию - но даже если в базе данных что-то есть, он всегда возвращает объект по умолчанию.
- Если
Profile
являетсяnull
я хочу, чтобы вернуть значение по умолчанию initialzied объект - Если
Profile
неnull
Я хочу, чтобы вернуть объект из базы данных
Дополнительно - что было бы самый разумный способ привязать объект «default» к моему dbcontext?
Как я могу достичь этого желаемого поведения?
public class Person
{
[Key]
public int Id {get; set;}
private Profile _profile;
public virtual Profile Profile
{
get
{
return _profile ?? (_profile= new Profile
{
Person = this,
PersonId = Id
});
}
set
{
_profile = value;
}
// properties
}
}
public class Profile
{
[Key, ForeignKey("Person")]
public int PersonId {get; set;}
[ForeignKey("PersonId")]
public virtual Person Person{ get; set; }
// properties
}
Я знаю, что вы можете инициализировать коллекции, так что они не нулевой, но я хотел бы, чтобы инициализировать один объект слишком.
Что вы хотите, чтобы загрузить объект Person, который не имеет профиля в базе данных, а затем обновить некоторое свойство и сохранить его обратно? Должна ли EF создавать профиль для такого человека в базе данных? –
@YacoubMassad Я хочу, чтобы 'Person' без' Profile' имел экземпляр экземпляра 'Profile' - он не должен быть сохранен, если не вызвано' SaveChanges() ', но меня это не так беспокоит часть на данный момент - я просто хочу создать экземпляр 'Profile', если он равен NULL, и если он не равен нулю, загрузите из базы данных как обычно. – Alex
Что это за класс 'User'? Это базовый класс для «Человека»? –