2


0

Entity Frameworkクエリが正しく列挙された結果を返さない

エンティティフレームワーククエリが正しく列挙されないという、本当に奇妙な問題があります。

私が使用しているSQL Serverテーブルには、Skuフィールドを持つテーブルがあり、列は「別個」です。 キーではありませんが、重複する値は含まれていません。 実際のSQLを「where」、「distinct」、「group by」の手がかりで使用して、これを確認しました。

しかし、私がこれをすると:

// Not good
foreach(var product in dc.Products)

or

// Not good
foreach(var product in dc.Products.ToList())

or

// Not good
foreach(var product in dc.Products.OrderBy(p => p.Sku))

返される最初の2つのオブジェクトは*同じです!!! *

3番目の項目は技術的にはテーブルの2番目の項目でしたが、4番目の項目は再びテーブルの最初の行でした!!!

私が見つけた唯一の解決策は、Distinct拡張メソッドを使用することです。この方法では、実際には何も実行されません。

// Good
foreach(var product in dc.Products.ToList().Distinct())

これに関する別の奇妙なことは、*結果のクエリの数が同じであるということです!!! *結果の列挙型に正しい結果または重複があるかどうかにかかわらず、私は常に実際のテーブルの行数を取得します! (いいえ、どこにも制限条項はありません)。

何がこれを引き起こす可能性があります!?!?!?

1 Answer


1


テーブルの主キーがあることを確認してください。