public static bool ExistsMappingTypeName(Type dotNetEntityType, ObjectContext defaultContext)
        {
            // dotNetEntityType can be a POCO object with no ObjectContext. We are getting proxy for the POCO
            // object which will have the context needed for LINQ stuff
            Type objectType = ObjectContext.GetObjectType(dotNetEntityType);

            ObjectContext   context         = TypesToContexts.GetOrDefault(objectType.FullName, defaultContext);
            EntityContainer entityContainer = context.MetadataWorkspace.GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace);
            EntitySetBase   entitySet       = entityContainer.BaseEntitySets.FirstOrDefault(es => es.ElementType.Name == objectType.Name);

            if (entitySet != null)
            {
                _typeNamesMapping.GetOrAdd(objectType.FullName,
                                           () =>
                {
                    return(entitySet.ElementType.FullName);
                });
                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// This function checks if the entity meta data is already cached for the given context. If it is not
        /// then it does it by looking into the assembly file.
        /// </summary>
        /// <param name="context">Object context</param>
        public static void EnsureStorageMetaData(ObjectContext context)
        {
            Assembly assembly = Assembly.GetAssembly(context.GetType());

            _assembliesLoaded.GetOrAdd(assembly.FullName, () => LoadMetaDataFromAssembly(assembly));
        }