如何为实体设置默认对象?
假设我有一个Person实体,最初没有Profile要求。
现在我需要一个Profile,但是已经存在的实体目前没有Profile。
有没有办法在将来加载这些实体时为它们提供默认对象,以便使用Person实体的任何人都可以假定Profile永远不为空并且总是有一个值-即使它是默认值。
下面您可以看到我尝试过什么 - 它确实创建了一个默认值 - 但即使数据库中有内容,它始终返回默认对象。
- 如果Profile为null,则希望返回一个默认初始化的对象
- 如果Profile不为null,则希望返回来自数据库的对象
另外,将“默认”对象附加到我的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是否应该为这样的人创建一个资料档案? - Yacoub MassadUser
类是什么?它是Person
的基类吗? - Yacoub MassadUser
类重命名为Person
- 实际上它应该是一个Person
- 我已编辑我的问题以反映这一点。 - Alex