EntitySQLクエリでEntityObjectを使用してMSSQLDBからいくつかのレコードをフェッチしようとしています。フィルタリングに使用しているフィールドは、日時のタイプです。ミリ秒なしでSQLServerに投影された生成されたクエリは、何も返しません。ミリ秒を加算すると、結果が得られます。
EntitySQLを使用してミリ秒なしで結果を取得するにはどうすればよいですか?
ありがとう。
EntitySQLクエリでEntityObjectを使用してMSSQLDBからいくつかのレコードをフェッチしようとしています。フィルタリングに使用しているフィールドは、日時のタイプです。ミリ秒なしでSQLServerに投影された生成されたクエリは、何も返しません。ミリ秒を加算すると、結果が得られます。
EntitySQLを使用してミリ秒なしで結果を取得するにはどうすればよいですか?
ありがとう。
エレガントではありませんが、これは私にとってはうまくいきました:
foos.SingleOrDefault(f => f.EntryDate.Year == bar.EntryDate.Year &&
f.EntryDate.Month == bar.EntryDate.Month &&
f.EntryDate.Day == bar.EntryDate.Day &&
f.EntryDate.Hour == bar.EntryDate.Hour &&
f.EntryDate.Minute == bar.EntryDate.Minute &&
f.EntryDate.Second == bar.EntryDate.Second);
これを行う1つの方法は、データのビューを作成することです。ここで、日時列はsmalldatetime(ミリ秒は含まれません)に変換されます。
次に、ビューをエンティティフレームワークモデルに追加し、ビューからデータを読み取ります。
お役に立てれば
シラーズ
私が見つけた回避策は、最初のフェッチストアの日付を.ToBinary()として、フィルターをかけるときにnew DateTime(binaryValue)を実行して、それと比較することです。