是否可以爲實體設置默認對象?爲實體框架導航屬性設置默認對象
說我有一個Person
實體,最初沒有要求Profile
。
現在我需要一個Profile
- 但有一些現有的實體目前沒有Profile
。
有沒有一種方法,我可以提供,當他們在未來會加載這些實體默認的對象,因此,使用Person
實體任何人都可以假定Profile
永遠不能爲null,總是有一個值 - 即使它是一個默認值。
下面你可以看到我已經嘗試過 - 哪些會創建一個默認值 - 但即使數據庫中有某些東西,它總是會返回默認對象。
- 如果
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
}
我知道你可以初始化集合,使它們不爲null,但我也想初始化一個對象。
當你在數據庫中加載沒有配置文件的'Person'對象時,你想要發生什麼,然後更新它的一些屬性並保存回去? EF應該爲數據庫中的這個人創建一個配置文件嗎? –
@YacoubMassad我希望沒有'Profile'的'Person'擁有'Profile'的實例化實例 - 除非調用SaveChanges()',否則不必保存 - 但我並不擔心這個問題部分 - 我只是想實例化一個'Profile',如果它是空的,如果它不爲空,就像正常情況下從數據庫加載。 – Alex
這是什麼'User'類?它是'Person'的基類嗎? –