private static EntityMap CreateEntityMap <TEntity>(ObjectQuery query) { Type entityType = typeof(TEntity); ObjectContext objectContext = query.Context; var modelSet = objectContext.GetEntitySet <TEntity>(); if (modelSet == null) { return(null); } var entityMap = new EntityMap(entityType); entityMap.ModelSet = modelSet; entityMap.ModelType = entityMap.ModelSet.ElementType; var metadata = objectContext.MetadataWorkspace; // force metadata to load dynamic dbProxy = new DynamicProxy(objectContext); dbProxy.EnsureMetadata(); ItemCollection itemCollection; if (!metadata.TryGetItemCollection(DataSpace.CSSpace, out itemCollection)) { // force CSSpace to load query.ToTraceString(); // try again metadata.TryGetItemCollection(DataSpace.CSSpace, out itemCollection); } if (itemCollection == null) { return(null); } dynamic mappingFragmentProxy = FindMappingFragment(itemCollection, entityMap.ModelSet); if (mappingFragmentProxy == null) { return(null); } // SModel entityMap.StoreSet = mappingFragmentProxy.TableSet; entityMap.StoreType = entityMap.StoreSet.ElementType; SetProperties(entityMap, mappingFragmentProxy); SetKeys(entityMap); SetTableName(entityMap); return(entityMap); }