如何在数据库中使用外键引用保存字符串属性

时间:2015-06-07 07:13:17

标签: c# sql asp.net entity-framework

我正在使用实体框架和sql数据库开发一个asp.net mvc项目。 在某些操作上,我想保存一条通知消息,其中包含另一个模型User

的引用

这两个模型如下

public class NotificationMessage
{      
    [Key]
    public int Id { get; set; }
    public int? FromUserId { get; set; }
    [ForeignKey("FromUserId")]
    public virtual User FromUser { get; set; }
    public string Message { get; set; }

}


public class User 
{      
    [Key]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Name{ get; set; }          
}

现在,在某些操作中,我向数据库表添加了一个新的notificationmessage,消息属性就像

  

"来自用户的新通知" + FromUser.Name

现在,如果我更改了用户名,则此消息不会更改,因为它在数据库中保存为静态消息。 我想要的是,此消息将以一种方式保存在数据库中,如果我更改用户的名称属性,此消息将显示更新的用户名

1 个答案:

答案 0 :(得分:1)

如果您将裸string保留在数据库中,即使使用相关实体中的某些数据构建它,它也将保持为string。用于构造该字符串的表达式在每次访问时都不会被重新评估(无论EF,这是自然string行为)。

您最好将Message更改为计算属性:

public string Message
{
    get { return "new notification from user" + FromUser.Name; }
}