我正在使用实体框架和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
现在,如果我更改了用户名,则此消息不会更改,因为它在数据库中保存为静态消息。 我想要的是,此消息将以一种方式保存在数据库中,如果我更改用户的名称属性,此消息将显示更新的用户名
答案 0 :(得分:1)
如果您将裸string
保留在数据库中,即使使用相关实体中的某些数据构建它,它也将保持为string
。用于构造该字符串的表达式在每次访问时都不会被重新评估(无论EF,这是自然string
行为)。
您最好将Message
更改为计算属性:
public string Message
{
get { return "new notification from user" + FromUser.Name; }
}