我有一个名为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字段似乎是唯一一个无法传递其值的字段。我如何使计算的列值通过?