Запрос Entity Framework не возвращает правильно перечисленные результаты - PullRequest
2 голосов
/ 22 марта 2010

У меня действительно странная проблема, когда мой запрос структуры сущностей не перечисляется правильно.

В таблице SQL Server, которую я использую, есть таблица с полем Sku, а столбец «отличный». Это не ключ, но он не содержит повторяющихся значений. Используя фактический SQL с where, distinct и group by ключами, я подтвердил это.

Однако, когда я делаю это:

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

или

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

или

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

первые два объекта, которые возвращаются ТО ЖЕ ВРЕМЯ !!!

Третий элемент был технически вторым элементом в таблице, но затем четвертый элемент снова был первым рядом с таблицей !!!

Единственное решение, которое я нашел, - это использовать метод расширения Distinct, который не должен ничего делать в этой ситуации:

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

Еще одна странная вещь по этому поводу состоит в том, что количество результирующих запросов одинаково !!! Так, независимо от того, имеет ли результирующее перечисляемое значение правильные результаты или дубликаты, я всегда получаю количество строк в фактическая таблица! (Нет, у меня нигде нет предельного предложения).

Что могло вызвать это!?!?!?

1 Ответ

1 голос
/ 15 ноября 2011

Убедитесь, что у вас есть первичный ключ для таблицы.

...