Entity Framework IQueriyble для объектов System.ArgumentOutOfRangeException в mscorlib.dll - PullRequest
0 голосов
/ 05 апреля 2019

Я пытался найти что-то подобное, но я не мог найти никакого решения, поэтому я попробую это с новым вопросом здесь.Я использую следующий (отладочный) код для иллюстрации проблемы:

var ids = new List<int>{ 20, 22 };
var entities = CoreFactory.CreateStorageRepository<IPerson>().Entities.Where(e => ids.Contains(e.Id)).ToArray();

Этот код создает репозиторий, который в данном случае предоставляет мне IQueryable (Entities).Сущности происходят из EntityFramework (Devart.Dotconnect PostgreSQL).Созданный код pgSQL выглядит следующим образом и может быть выполнен, например, в окне pgAdmin - SQL без проблем:

SELECT 
"Extent1".id,
....
FROM person AS "Extent1"
WHERE "Extent1".id IN (20,22)

Настоящая проблема - последняя часть первой части кода, ".ToArray ()».Всякий раз, когда я пытаюсь получить реальные объекты из сгенерированного IQueryable, я получаю следующие сообщения об ошибках (я также пробовал .ToList () и перебираю коллекцию с foreach):

Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll
Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll
Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll
Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll

(2 сообщения / объект).Когда я тестировал Код с циклом foreach, я получал 2 ошибки в каждой итерации ...

Странно то, что я могу выполнить тот же тест с другим типом сущности, не получая ошибку привсе, например, когда я запускаю этот Код с IAntrag и двумя другими идентификаторами (оба имеют одинаковое определение идентификатора в модели, а также в БД), ошибки не выдается вообще.

Даже незнакомец:код выдает ошибки, но в итоге (с очень плохой производительностью) я получаю два желаемых объекта!

Еще более странно: 1: 1 один и тот же код работает на другом ПК (аналогичные настройки) без выброшенногоошибки.

Было бы замечательно, если бы кто-то указал мне правильное направление, я должен установить / переустановить какой-либо специальный .net Framework или что-то еще?

...