实体框架查询自定义对象

时间:2015-02-08 13:40:43

标签: c# entity-framework

我正在尝试查询这样的内容:

var values = new Entities().result.SqlQuery( 
"select distinct     
i.item_type_id,     
Min(value) over (partition by i.item_type_id) as min,     
Max(value) over (partition by i.item_type_id) as max,     
Avg(value) over (partition by i.item_type_id) as avg    
from items i   
inner join packages p on p.id = i.package_id " 
WHERE ... ").ToList();

首先我尝试var values = new Entities().item.SqlQuery(...) 但结果与item无关,item与此查询的结果具有不同的属性。

比我创建的结果对象:

public partial class rolling_table
{
    public int item_type_id { get; set; }
    public int min { get; set; }
    public int max { get; set; }
    public int avg { get; set; }
}

并运行var values = new Entities().result.SqlQuery()

但它抱怨

  

实体类型结果不是当前模型的一部分   上下文。

我猜它认为结果是数据库中的一个表,但事实并非如此。

如何查询自定义类型,而不是持久对象?

感谢

1 个答案:

答案 0 :(得分:1)

您可以在SqlQuery对象上使用Database方法。

var values = context.Database.SqlQuery<rolling_table>("your_query").ToList();