次のようなEFのクエリがあります。
var x = _db.qMetaDataLookups.ToList();
SQLサーバーで直接実行するとSELECT * FROM qMetaDataLookup
、2155の異なる行が返されます。上記を実行した後、xALSOには2155個の要素が含まれます。
問題は、データが間違っていることです。SQLクエリから取得するのと同じデータをEFから取得していません。
特に、SQL出力に存在する特定の要素があり、それを「WXYZ」と呼びます。これは、クエリのEFバージョンではまったく表示されません(まったく同じデータベースに対して)。
代わりに、私が見つけたのは多くの繰り返しです。リストを呼び出すとx.Distinct()
、2155要素からわずか143要素にフィルターされます。
私は困惑しています。この単純なクエリでEFとSQLの結果が異なるのを見たことがありません。非常に単純な[face-palm]の説明があるはずですが、私はそれを見逃しています。
ありがとう。
編集 qMetaDataLookup(ビュー)には、データベースに関する情報が含まれています。本質的には、すべてのテーブルとビュー、およびそれらの各列のリストと、データ型、長さ、精度、スケールなどに関するその他の情報が含まれます。このテーブルの「キー」は、「tableName」と一致する列である必要があります。 columnName "ですが、代わりにEFがすべてのデータ型プロパティを選択しました。これが、クエリが期待どおりに実行されない理由です。