"Ошибка чтения данных имеет более чем одну ошибку поля в Entity Framework
Я выполняю этот простой запрос с Entity Framework
db.Database.SqlQuery<string>("SELECT * FROM hospital");
Но я получил эту ошибку:
Считыватель данных имеет более одного поля. Несколько полей недействительны для примитивных или перечисляемых типов EDM.
В чем может быть проблема?
Ответы
Ответ 1
Было бы полезно посмотреть, как выглядит больничный стол, но если предположить, что что-то простое, как больница, состоит из HospitalId и HospitalName, тогда у вас есть несколько вариантов.
db.Database.SqlQuery<IEnumerable<string>>("SELECT hospitalName FROM hospital"); //would work if all you're trying to do is get the Name
db.Database.SqlQuery<MyEntity>("SELECT * FROM hospital"); //where you define MyEntity as the same structure as the table would work
db.Database.SqlQuery<IEnumerable<Tuple<int, string>>>("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>
В основном ошибка заключается в том, что код не знает, как набить структуру больницы на строку
Ответ 2
Это решило мою проблему, некоторые результаты, где не было способа, которым он должен был
string storedProcedure = "Admin_AutoGenerateKeywordsFortblCompany @Company_ID=" + CompId;
var s= db.ExecuteStoreQuery<List<string>>("exec " + storedProcedure).ToList();
здесь можно поймать один или несколько результатов
Ответ 3
Основываясь на ответном ответе, который дал мне cgotberg, я собираюсь ответить на мой собственный вопрос.
Проблема с этим кодом заключалась в том, что какое-то поле таблицы было не таким, как в базе данных (я искал исключение, но я не мог его найти, извините за это), но он действительно существует.
По какой-то причине мне пришлось добавить все поля таблиц в строку запроса. Я имею в виду, мне пришлось написать "SELECT hospital_phone, holpital_street и т.д. И т.д. ОТ больницы", если я напишу "SELECT hospital_name FROM hospital", возникает исключение.
Надеюсь, я это хорошо объяснил.