在使用实体框架的项目中,说我有一个实体,例如
[Table("MyTable")]
public partial class MyTable
{
public string FirstName { get; set; }
public string LastName { get; set; }
[DatabaseGenerated( DatabaseGeneratedOption.Computed)]
public string FullName { get; set; }
}
在SQL Server 2012数据库上以FullName
和FirstName
的串联形式计算LastName
的地方。
在项目开始时,整个表都在本地完全加载。也就是说,通过DbContext.DbSet<MyTable>.Load()
在运行时我是
DbSet
的{{1}} DbContext
现在,在调用DbContext.SaveChanges()
之后,我期望用该计算值填充该实体的SaveChanges()
计算属性。但是可悲的是,这似乎没有发生?
如何从数据库获取计算值到我的实体对象中?
答案 0 :(得分:1)
在SQL Server 2012数据库上将
FullName
计算为FirstName
和LastName
的串联。
好吧,由于您使用的是EF-Code First,因此您没有将它们连接到类的FullName
属性中,因此应在getter中指定它,如下所示:
get { return string.Format("{0} {1}", FirstName, LastName); }
或者使用更新版本的C#,您可以:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string FullName => $"{FirstName} {LastName}";