环境:VS 2017 Entity Framework 6.0
class Program
{
static void Main(string[] args)
{
using (var ctx = new pubsEntities())
{
//this will throw an exception
var employees = ctx.Database.SqlQuery<string>(@"
select * from employee;
").ToList();
}
}
}
收到此错误:
{“数据读取器具有多个字段。 对EDM基本类型或枚举类型有效。“}
答案 0 :(得分:1)
select * from employee
假设employee表具有多个列(id,name,dob等),那么您的查询将返回多个列。
ctx.Database.SqlQuery<string>(...)
这将尝试将这多个列投影到字符串中,这是不可能的,因此会出现错误消息。
答案 1 :(得分:1)
这取决于您的模型(类型属性名称,sql列名称等)。
如果您想使用SqlQuery
:
public class MyDTO {
string p1 {get; set;}
int p2 {get; set;}
//...
}
var employees = ctx.Database.SqlQuery<MyDTO>(@"
select someString as p1, someInt as p2 from employee").ToList();
否则,您可能在上下文中有一个employees表:
var employees = ctx.Employees.ToList();
或
var employees = ctx.Employees.Where(x => x.Name == "Doe").ToList();
如果您坚持使用string
:
var employees = ctx.Database.SqlQuery<string>(
@"select someString from employee;").ToList();