私は、EF5を使用DbContext
してSQLを使用してデータをクエリする正しい方法に頭を悩ませようとしています。EF は ORM であり、通常は linqTOentities およびエンティティ オブジェクトで使用されることを十分に認識しています。しかし、SQL を必要とする興味深いケースがあります。
これが私が使ってきたサンプルコードです:
testQuery = "select 'HITHERE' as firstval, 'HOTHERE' as secondval;";
var results = DataContext.Database.SqlQuery<string>(testQuery);
上記のコード (C#) を実行すると、次のエラーが発生します。
{"The data reader has more than one field. Multiple fields are not valid for EDM primitive or enumeration types."}
エラーは、バインドする正しい型ではないというstring
部分に関係していると考えました。.SqlQuery<string>(testQuery)
そこで、コードを次のように変更しました。
testQuery = "select 'HITHERE' as firstval, 'HOTHERE' as secondval;";
var results = DataContext.Database.SqlQuery<List<string>>(testQuery);
この更新されたコードを実行するとresults
、値がなく、カウントが 0 になります。ただし、SSMS でテスト SQL クエリを実行すると、期待どおりの結果が得られます。1 行、列名を持つ 2 つの値。firstVal = HITHERE および secondVal = HOTHERE。
これらの選択値を DbContext を使用して C# の変数にバインドするにはどうすればよいですか?