将计算列的结果从数据库获取到实体

时间:2018-09-11 14:21:30

标签: c# sql-server entity-framework entity-framework-6 ef-code-first

在使用实体框架的项目中,说我有一个实体,例如

[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数据库上以FullNameFirstName的串联形式计算LastName的地方。

在项目开始时,整个表都在本地完全加载。也就是说,通过DbContext.DbSet<MyTable>.Load()

在运行时我是

  1. 在代码中创建一个实例
  2. 设置此对象的名字和姓氏属性。
  3. 将此实例添加到DbSet的{​​{1}}
  4. 呼叫DbContext

现在,在调用DbContext.SaveChanges()之后,我期望用该计算值填充该实体的SaveChanges()计算属性。但是可悲的是,这似乎没有发生?

如何从数据库获取计算值到我的实体对象中?

1 个答案:

答案 0 :(得分:1)

  

在SQL Server 2012数据库上将FullName计算为   FirstNameLastName的串联。

好吧,由于您使用的是EF-Code First,因此您没有将它们连接到类的FullName属性中,因此应在getter中指定它,如下所示:

get { return string.Format("{0} {1}", FirstName, LastName); }

或者使用更新版本的C#,您可以:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string FullName => $"{FirstName} {LastName}";