views:

104

answers:

0

I have this really strange problem where my entity framework query isn't enumerating correctly.

The SQL Server table I'm using has a table with a Sku field, and the column is "distinct". It isn't a key, but it doesn't contain any duplicate values. Using actual SQL with where, distinct and group by cluases I have confirmed this.

However, when I do this:

// 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))

the first two objects that are returned ARE THE SAME!!!

The third item was technically the second item in the table, but then the fourth item was the first row from the table again!!!

The only solution I have found is to use the Distinct extension method, which shouldn't really do anything in this situation:

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

Another weird thing about this is that the count of the resulting queries is the same!!! So whether or not the resulting enumerable has the correct results or duplicates, I always get the number of rows in the actual table! (No I don't have a limit clause anywhere).

What could possibly cause this!?!?!?