首先从Entity Framework DB中的SQL计算属性

时间:2017-05-23 20:35:56

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

我有一个名为connector的现有数据库表。 我正在尝试构建一个使用Entity Framework 6的.net应用程序。 有一次,我试图使用EF提取连接器列表。但问题是在我的查询中我创建了一个计算列。

实体类是这样的:

namespace ActionService.Models
{
    public partial class Connector
    {
        public int id { get; set; }
        public string name { get; set; }
        public string description { get; set; }
        public string type { get; set; }
        public int number { get; set; }
        public int version { get; set; }
        public int status { get; set; }
    }
}

和这样的部分类:

 namespace ActionService.Models
 {
     public partial class Connector
     {
        [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
        public bool hasDraft 
     }
 }

我提取内容的代码是这样的:

 var models = db.Connectors.SqlQuery(" SELECT *,IIF(status=1, 'True', 'False') as 'hasDraft'  From  [Connectors] c  " +
              "WHERE c.[version] = (Select Max([version]) from [Connectors] c2 where c2.number = c.number)").ToList();

并且sql查询返回如下表:

id  name    description             type    number  version status  hasDraft
5   new     this is new desc wesee  SQL     1       5       1       True

正如我们所看到的,hasDraft是一个通过查询生成的计算列,其值为True。

但在我的var models对象中(现在只有1条记录),hasDraft值为false;即使我使用sql profiler监视查询并确保它在hasDraft字段上返回true。但是所有其他字段值都已正确传递。 hasDraft字段似乎是唯一一个无法传递其值的字段。我如何使计算的列值通过?

0 个答案:

没有答案