Подтвердить что ты не робот

"Ошибка чтения данных имеет более чем одну ошибку поля в Entity Framework

Я выполняю этот простой запрос с Entity Framework

db.Database.SqlQuery<string>("SELECT * FROM hospital");

Но я получил эту ошибку:

Считыватель данных имеет более одного поля. Несколько полей недействительны для примитивных или перечисляемых типов EDM.

В чем может быть проблема?

4b9b3361

Ответ 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", возникает исключение.

Надеюсь, я это хорошо объяснил.