我试图找到任何类似的东西,但找不到任何解决方案,因此在这里尝试一个新问题。 我使用以下(调试)代码来说明问题:
var ids = new List<int>{ 20, 22 };
var entities = CoreFactory.CreateStorageRepository<IPerson>().Entities.Where(e => ids.Contains(e.Id)).ToArray();
此代码创建一个存储库,在这种情况下,该存储库为我提供了一个IQueryable(实体)。实体来自EntityFramework(Devart.Dotconnect PostgreSQL)。 创建的pgSQL代码看起来像这样,可以执行,例如在pgAdmin-SQL窗口中没有问题:
SELECT
"Extent1".id,
....
FROM person AS "Extent1"
WHERE "Extent1".id IN (20,22)
真正的问题是第一个代码部分的最后一部分,即“ .ToArray()”。每当我尝试从生成的IQueryable中获取实际对象时,都会收到以下错误消息(我也尝试了.ToList()并使用foreach遍历Collection):
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和其他两个ID(在模型和数据库中都具有相同的ID定义)运行此代码时,根本不会引发任何错误。
即使是陌生人:代码也会引发错误,但是最后(性能确实很差)我得到了两个所需的对象!
更奇怪的是:1:1相同的代码在另一台PC(相似的设置)上运行,而不会引发错误。
如果有人可以向我指出正确的方向,那太好了,我应该安装/重新安装任何特殊的.net Framework还是什么?