如何从非实体类型的SQL查询中检索多个列?

时间:2016-05-24 12:36:08

标签: c# sql-server entity-framework asp.net-mvc-5

我在数据库中有一个包含多个列的视图。我正在尝试此查询

public class TestEntity
{
    public string ref { get; set; }
    public string Name { get; set; }
    public string Batch { get; set; }
}
var res = dbContext.Database.SqlQuery<TestEntity>("Select * from dbo.MyView").ToList();

但是这会返回仅包含空值且没有数据的对象列表。 但是,当我尝试像这样检索单列时,它可以正常工作

var res = dbContext.Database.SqlQuery<string>("Select Name from dbo.MyView").ToList();

我注意到问题出在TestEntity上,因为当我使用字符串而不是TestEntity时,它会起作用。 有什么建议我在这里做错了吗?

1 个答案:

答案 0 :(得分:9)

只需替换以下代码

var res = dbContext.Database.SqlQuery<TestEntity>("Select * from dbo.MyView").ToList();

用这个再试一次......

var res = dbContext.Database.SqlQuery("Select * from dbo.MyView").ToList<TestEntity>();

如果仍然不起作用,那么你需要检查你的

  

TestEntity

和你的

  

dbo.MyView

对于相同的列。因为如果MyView和TestEntity中有不同的列,那么它将无效...

如果你在查询中更改了列名,那么它会抛出一个异常,否则它将无法正常工作......

如果这对你有所帮助,那就不要忘记标记......

...谢谢