我有一个User
实体和一个EmailRecipient
具有一对一关系的实体。电子邮件收件人也可以在没有相关用户实体的情况下创建。
如果附加/包含,我的实体从EmailRecipient
实体获取Name
,Surname
和。我已设置属性以在返回用户属性之前返回支持字段值(如果它不为空),因此我可以根据需要指定替代名称。EmailAddress
User
保存 时EmailRecipient
,EF 会查看和属性Name
,并使用实体中的值填充表,而不是使用支持字段值。如果我没有明确设置值,我希望这些字段在数据库中保持为 NULL,即Surname
EmailAddress
EmailRecipient
User
recipient.Name = "new name";
我的问题:如何使 EF 根据支持字段值而不是属性值填充选定的数据库字段?还是有完全不同的方法来解决这个问题?
电子邮件收件人实体:
public class EmailRecipient
{
private string _name;
public virtual string Name
{
get { return User == null ? _name : _name ?? User.Name; }
set { _name = value; }
}
private string _surname;
public virtual string Surname
{
get { return User == null ? _surname : _surname ?? User.Surname; }
set { _surname = value; }
}
private string _emailAddress;
public virtual string EmailAddress
{
get { return User == null ? _emailAddress : _emailAddress ?? User.EmailAddress; }
set { _emailAddress = value; }
}
[Key, ForeignKey(nameof(UserId))]
public User User { get; protected set; }
public long? UserId { get; set; }
}