我正在使用Entity Framework连接到一个名为Modules
的表,然后我需要将它们转换为这样的字典:
'get the modules and convert to a dictionary keyed by id and return
dim dict = context.Modules.ToDictionary(Function(x) x.Id)
这通常有效,但有时在这行代码中我得到了这个例外:
索引超出了数组的范围。 System.Linq.Enumerable.ToDictionary System.Linq.Enumerable.ToDictionary System.Data.Entity.Internal.Linq.InternalSet
1.GetEnumerator System.Data.Entity.Internal.Linq.InternalSet
1.Initialize System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappings System.Data.Metadata.Edm.MetadataWorkspace.GetEdmSpaceType System.Data.Metadata.Edm.MetadataWorkspace.TryGetEdmSpaceType System.Data.Mapping.DefaultObjectMappingItemCollection.TryGetMap System.Data.Mapping.DefaultObjectMappingItemCollection.TryGetMap System.Collections.Generic.List`1.get_Item
我无法弄清楚这里发生了什么。为什么EF试图通过索引访问列表,以及为什么它使用不存在的索引?为什么它只是零星的?有问题的表是一个简单的查找表,其内容永远不会改变。