数据阅读器有多个字段"实体框架错误
本文关键字:quot 实体 错误 框架 字段 数据 | 更新日期: 2023-09-27 18:08:25
我正在执行这个简单的查询与实体框架
db.Database.SqlQuery<string>("SELECT * FROM hospital");
但是我得到了这个错误:
数据读取器有多个字段。多个字段对EDM原语类型或枚举类型无效。
有什么问题吗?
看看医院表是什么样子会很有用,但假设医院是由HospitalId和HospitalName组成的,那么您有几个选择。
//would work if all you're trying to do is get the Name:
db.Database.SqlQuery<IEnumerable<string>>("SELECT hospitalName FROM hospital");
//where you define MyEntity as the same structure as the table would work
db.Database.SqlQuery<MyEntity>("SELECT * FROM hospital");
// would theoretically work although I haven't tried it. Where the Tuple
// items would have to match the database types in order. I.e. if field 1
// is an int and field 2 is a string then Tuple<int,string>
db.Database.SqlQuery<IEnumerable<Tuple<int, string>>>("SELECT * FROM hospital");
基本上错误是代码不知道如何将医院的结构塞进字符串
如果您试图使用SqlQuery
而不是使用ExecuteSqlCommand
来执行INSERT
, UPATE
或DELETE
,您可能也会得到此错误
using (var ctx = new SchoolDBEntities())
{
int noOfRowUpdated = ctx.Database.ExecuteSqlCommand("Update student
set studentname ='changed student by command' where studentid=1");
int noOfRowInserted = ctx.Database.ExecuteSqlCommand("insert into student(studentname)
values('New Student')");
int noOfRowDeleted = ctx.Database.ExecuteSqlCommand("delete from student
where studentid=1");
}
详细信息请访问-http://www.entityframeworktutorial.net/EntityFramework4.3/raw-sql-query-in-entity-framework.aspx
这解决了我的问题,一些结果没有得到它应该的方式
string storedProcedure = "Admin_AutoGenerateKeywordsFortblCompany @Company_ID="
+ CompId;
var s = db.ExecuteStoreQuery<List<string>>("exec " + storedProcedure).ToList();
这里可以捕获单个或多个结果
基于cgotberg给我的第二个答案,我将回答我自己的问题。该代码的问题是,一些表的字段是不一样的,因为它是在数据库(我正在寻找异常,但我找不到它,抱歉),但它实际上存在。出于某种原因,我不得不将表的所有字段添加到查询字符串中。我的意思是,我必须写"SELECT hospital_phone, holpital_street等,等等 FROM hospital",如果我写"SELECT hospital_name FROM hospital",就会出现异常。
希望我已经解释清楚了。