实体框架构造函数错误

时间:2017-01-12 12:40:59

标签: c# entity-framework

我有一段代码从表格中选择一个列,但效果很好:

db.Database.SqlQuery<string>("select Col1 from ....).ToList();

但是,正如预期的那样,当尝试选择多个列时,它会出错,因为结果结构不正确。

我尝试过以下方法:

db.Database.SqlQuery<Tuple<string, string>>("select Col1, Col2 from ...).ToList();

返回错误:

  

结果类型&#39; System.Tuple`2 [System.String,System.String]&#39;可能不是抽象的,必须包含默认构造函数。

我该如何解决这个问题,我是否正确使用元组?

2 个答案:

答案 0 :(得分:2)

您需要拥有一个包含与列名称相同的属性的类,以便Database.SqlQuery能够正常工作。请参阅here

public class MyType
{
    public string Col1 { get; set; }
    public string Col2 { get; set; }
}

List<MyType> list = db.Database.SqlQuery<MyType>("select Col1, Col2 from ....").ToList();

答案 1 :(得分:1)

为查询结果定义一个类,例如

class QueryResult
{
    public string Col1 { get; set; }
    public string Col2 { get; set; }
}

并像这样查询:

db.Database.SqlQuery<QueryResult>("select Col1, Col2 from ...).ToList();
相关问题