带有计算列的DbContext上的原始SQL

时间:2014-03-04 23:30:50

标签: c# sql-server entity-framework tsql calculated-columns

我需要运行原始SQL查询并返回计算列。该查询与POCO类的属性匹配。对数据库运行时查询运行正常,但计算列返回null

public class PocoClass
{
    public int ID { get; set; }

    [NotMapped]
    public DateTime? CalculatedDate { get; set; }
}

查询假代码(实际查询更复杂):

string sql = @"SELECT ID, max(date) as CalculatedDate 
               from randomtable
               where ID = 1
               group by ID
               order by CalculatedDate";

var result = db.Database.SqlQuery<PocoClass>(sql).ToList();

我认为使用“as CalcluatedDate”会允许结果包含该字段但不起作用。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果使用代码优先,请尝试将DatabaseGenerated属性添加到CalculatedDate字段:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime? CalculatedDate { get; set; }

如果首先使用数据库,并且您已在设计器中生成类,请打开模型(.edmx文件),然后导航到相关实体上的列。然后,在属性中,将StoreGeneratedPattern设置为Computed,然后重新生成模型。