EntityFrameworkにおけるSQLの直接実行
ちょっぴり落とし穴が。
SELECT fo.GroupingItem , AVG(fo.AverageItem) FROM FooTable as fo GROUP BY fo.GroupingItem
こんなSQLを発行したとする。 結果セットは
GroupingItem | 列名無し |
---|---|
foo | 1 |
bar | 2 |
baz | 3 |
こんな感じになったとする。これをEntityFrameworkでどうにかする場合、
public class Results { public string GroupingItem {get;set;} public int AverageItem {get;set;} }
こんなクラスを書いてマッピングする。さて、既にここで落とし穴が! 平均の結果が、マッピングされない。しかも、エラーも何も無しで0が入る(恐らく初期値)。ものすんげぇ悩んだけど、名前が消失するケースでは
SELECT fo.GroupingItem , AVG(fo.AverageItem) as AverageItem FROM FooTable as fo GROUP BY fo.GroupingItem
この様にちゃんと名前を付け直してあげよう。はぁ。 単に列の順番でマッピングしていって型が合わなければ弾く、とかそんな処理を想像していた。予想以上にちゃんとしてるのね。……なら、エラーぐらいは出して欲しいもんだけども。