public DatabaseExistenceState AnyModelTableExists( InternalContext internalContext) { if (!internalContext.DatabaseOperations.Exists(internalContext.Connection, internalContext.CommandTimeout, new Lazy <StoreItemCollection>((Func <StoreItemCollection>)(() => DatabaseTableChecker.CreateStoreItemCollection(internalContext))))) { return(DatabaseExistenceState.DoesNotExist); } using (ClonedObjectContext contextForDdlOps = internalContext.CreateObjectContextForDdlOps()) { try { if (internalContext.CodeFirstModel == null) { return(DatabaseExistenceState.Exists); } TableExistenceChecker service = DbConfiguration.DependencyResolver.GetService <TableExistenceChecker>((object)internalContext.ProviderName); if (service == null) { return(DatabaseExistenceState.Exists); } List <EntitySet> list = this.GetModelTables(internalContext).ToList <EntitySet>(); if (!list.Any <EntitySet>() || this.QueryForTableExistence(service, contextForDdlOps, list)) { return(DatabaseExistenceState.Exists); } return(internalContext.HasHistoryTableEntry() ? DatabaseExistenceState.Exists : DatabaseExistenceState.ExistsConsideredEmpty); } catch (Exception ex) { return(DatabaseExistenceState.Exists); } } }
public virtual bool QueryForTableExistence( TableExistenceChecker checker, ClonedObjectContext clonedObjectContext, List <EntitySet> modelTables) { using (new TransactionScope(TransactionScopeOption.Suppress)) { if (checker.AnyModelTableExistsInDatabase((ObjectContext)clonedObjectContext.ObjectContext, clonedObjectContext.Connection, (IEnumerable <EntitySet>)modelTables, "EdmMetadata")) { return(true); } } return(false); }