テーブルから特定のフィールドのみを選択するために、以下の未加工SQLクエリを実行しました。Raw Sql - System.Data.Entity.Core.EntityCommandExecutionException 'がEntityFramework.SqlServer.dllで発生しましたが、ユーザーコードで処理されませんでした
var qry = "SELECT ptitle, pname, paid, pidno, pdob, pgender, ptelh FROM patient where ";
if (strPatientName != "")
{
qry += "name like @name ";
if (strMRN != "")
qry += "&& id like @id ";
}
var query = db.Database.SqlQuery<patient>
((qry), new SqlParameter("@name", "%" + strPatientName + "%"), new SqlParameter("@id", "%" + strMRN + "%")).ToList();
私が実行すると、クエリに含まれていない列にエラーが表示されます。
「System.Data.Entity.Core.EntityCommandExecutionException」はEntityFramework.SqlServer.dllで発生したが、ユーザーコードで処理されなかった
追加情報:データリーダは、指定された「project.Modelsと互換性がありません。患者'。タイプ 'nbid'のメンバーには、同じ名前のデータリーダーに対応する列がありません。
クエリの結果セットの一部としてEFでは 'nbid'カラムが必要ですが、クエリの実行後は返されません。その列を 'qry'クエリ文字列に追加してみてください。 –
@TetsuyaYamamoto今度は、同じエラーが出てくるクエリには含まれていなかった次の列です。言い換えれば、エラーが消えるためにクエリのすべての列を含める必要があるということですか?物事は、私はちょうどいくつかのフィールドを呼び出す、すべてではないです。これは可能ですか? – Nurul
'patient'エンティティを' SqlQuery 'で結果セットとして使用しているので、そのエンティティに存在するすべてのカラムプロパティ名を返す必要があります(検証するには' SELECT * 'を試してください)。後で複数のフィールドを呼び出す場合は、LINQで別のフィールドを選択することもできます。 –