2016-03-04 60 views
0

我怎么能执行一个原始的SQL查询返回匿名类型返回匿名的ResultSet实体框架执行一个SQL查询?如何使用,使用的DbContext

我也跟着msdn link,但我无法找到使用DbContext任何解决方案。

在此先感谢。

我解决了这个问题。首先,我将DbContext对象转换为ObjectContext对象。然后休息和上面的链接一样。

一些代码片断

// convert DbContext to ObjectContext. 
var objContext = new DBEntities(); // db context object 
var adapter = (IObjectContextAdapter)objContext; 
var objectContext = adapter.ObjectContext; 

ObjectQuery<DbDataRecord> query = new ObjectQuery<DbDataRecord>(sqlQuery, objectContext); 
+0

使用动态的,而不是,因为我从这篇文章读你不能做匿名http://stackoverflow.com/questions/29852912/return-anonymous-type-using- sqlquery的,原始查询的实体框架 –

+1

它在您提供如何调用上下文对象,并用它来返回匿名结果的链接非常好解释的,有什么问题是什么呢? –

+0

@Antoine你试过了吗?我尝试过,并且因为使用DBContext对象而出现错误。 –

回答

1

只是其投影。

using (var context = new DbContext()) 
{ 
    var names = context.Employees.Select(e => new { Name = e.Name }); 
} 

或者

using (var context = new DbContext()) 
{ 
    ObjectQuery<DbDataRecord> query = 
     context.Employees.Select("it.Name"); 

    foreach (DbDataRecord record in query) 
    { 
     // iterate over records 
    } 
} 
+0

这是使用的DbContext,清晰,最好的办法 –