この単純なクエリを Entity Framework で実行しています
db.Database.SqlQuery<string>("SELECT * FROM hospital");
しかし、私はこのエラーが発生しました:
データ リーダーには複数のフィールドがあります。複数のフィールドは、EDM プリミティブまたは列挙型では無効です。
何が問題なのですか?
この単純なクエリを Entity Framework で実行しています
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");
基本的にエラーは、コードが病院の構造を文字列に詰め込む方法を知らないことです
cgotbergがくれた 2 番目の回答に基づいて、私自身の質問に回答します。そのコードの問題は、一部のテーブルのフィールドがデータベース内のフィールドと同じではないことでした(例外を探していましたが、見つかりませんでした。申し訳ありません)が、実際には存在します。何らかの理由で、テーブルのすべてのフィールドをクエリ文字列に追加する必要がありました。つまり、「病院から病院の電話、ホルピタル通りなどを選択する」と書く必要がありましたが、「病院から病院の名前を選択する」と書くと、例外が発生します。
うまく説明できたことを願っています。