/// <summary>
        ///     Builds and stores the workspace based on the given code first configuration.
        /// </summary>
        /// <param name = "databaseMapping">The code first EDM model.</param>
        public CodeFirstCachedMetadataWorkspace(DbDatabaseMapping databaseMapping)
        {
            //Contract.Requires(databaseMapping != null);

            _providerInfo = databaseMapping.Database.GetProviderInfo();

            _metadataWorkspace = databaseMapping.ToMetadataWorkspace();

            _assemblies = databaseMapping.Model.GetClrTypes().Select(t => t.Assembly).Distinct().ToList();

            Contract.Assert(
                databaseMapping.Model.Containers.Count() == 1, "Expecting Code First to create only one container.");
            _defaultContainerName = databaseMapping.Model.Containers.First().Name;
        }