C# 具有计算列的DbContext上的原始SQL

C# 具有计算列的DbContext上的原始SQL,c#,sql-server,entity-framework,tsql,calculated-columns,C#,Sql Server,Entity Framework,Tsql,Calculated Columns,我需要运行一个原始SQL查询并返回一个计算列。该查询匹配POCO类的属性。查询在对DB运行时运行良好,但计算列返回null public class PocoClass { public int ID { get; set; } [NotMapped] public DateTime? CalculatedDate { get; set; } } 查询假代码实际查询更复杂: string sql = @"SELECT ID, max(date) as Calculat

我需要运行一个原始SQL查询并返回一个计算列。该查询匹配POCO类的属性。查询在对DB运行时运行良好,但计算列返回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将允许结果包含该字段,但它不起作用


我缺少什么?

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


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

运行查询后,您能输入结果吗?@Rafa,ID返回准确;CalulatedDate对于每一行返回null。当我对DB本身运行查询时,CalculatedDate字段是准确的。NotMapped属性呢?您是否尝试删除它?需要[NotMapped]属性,因为我不希望将列添加到数据库中。也许我用错了,或者有另一种解决方法。我甚至不想尝试这个解决方案,因为这样我就必须撤销它,将列从数据库中取出。删除我的注释…这是可行的,但列被添加到数据库中,这是我试图避免的,换句话说,不确定这与删除NotMapped有什么不同。这种方法只适用于代码优先,而不是DB优先。如果您首先使用DB,并且已经在设计器中生成了类,请打开model.edmx文件,然后导航到相关实体上的列。然后,在properties中,将StoreGeneratedPattern设置为Computed,然后重新生成模型。我首先使用代码-我使用了您的建议,但正如我在之前的评论中所说的,该字段现在作为列添加到数据库中,这正是我试图避免的。这些链接可能会有所帮助:和
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime? CalculatedDate { get; set; }