"The data reader has more than one field" error in Entity Framework
It would be useful to see what the hospital table looks like but assuming something simple like hospital consists of HospitalId and HospitalName then you have a couple of choices.
//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");
Basically the error is the code doesn't know how to stuff the structure of hospital into a string
You might also get this error if you are trying to execute an INSERT
, UPATE
or DELETE
using SqlQuery
instead of using ExecuteSqlCommand
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");
}
For more details visit - http://www.entityframeworktutorial.net/EntityFramework4.3/raw-sql-query-in-entity-framework.aspx
This solved my issue, some results where not getting the way it was supposed to
string storedProcedure = "Admin_AutoGenerateKeywordsFortblCompany @Company_ID="
+ CompId;
var s = db.ExecuteStoreQuery<List<string>>("exec " + storedProcedure).ToList();
here single or multiple results can be caught