查询实体框架中的非实体类型

时间:2014-02-11 16:26:21

标签: c# sql entity-framework-4 ado.net

我正在尝试查询数据库中的非实体对象 ...我发现我应该使用sqlQuery(查询,参数);在msdn和很多博客中, 但问题是当我使用你的代码

 db.USERS.SqlQuery<string>(query, mail).ToList<string>();

我得到以下语法错误“非泛型方法'System.Data.Entity.DbSet.SqlQuery(string,params object [])'不能与类型参数一起使用” 我应该使用什么特定的名称空间或什么?

1 个答案:

答案 0 :(得分:1)

我注意到MSDN article建议我们使用表DbSet来调用SqlQuery来返回实体类型,例如这里:

using (var context = new BloggingContext()) 
{ 
    var blogs = context.Blogs.SqlQuery("dbo.GetBlogs").ToList(); 
}

以上内容会自动将结果转换为Blog实体。

在您的情况下,您希望将结果强制转换为字符串,即非实体类型,因此您需要使用SqlQuery中的Database的通用形式上下文中的对象:

using (var context = new BloggingContext()) 
{ 
    var blogNames = context.Database.SqlQuery<string>( 
                       "SELECT Name FROM dbo.Blogs").ToList(); 
}

如果您需要更多详细信息,请阅读docs