internal static string CreateTableExistsScript(StoreItemCollection itemCollection, out int count) { int num = 0; EFOracleDdlBuilder oracleDdlBuilder = new EFOracleDdlBuilder(); oracleDdlBuilder.AppendSql("select count(*) from "); oracleDdlBuilder.AppendSql("all_tables"); oracleDdlBuilder.AppendSql(" where "); foreach (EntityContainer entityContainer in itemCollection.GetItems <EntityContainer>()) { entityContainer.BaseEntitySets.OfType <EntitySet>().OrderBy <EntitySet, string>((Func <EntitySet, string>)(s => s.Name)); foreach (EntitySet entitySet in (IEnumerable <EntitySet>)entityContainer.BaseEntitySets.OfType <EntitySet>().OrderBy <EntitySet, string>((Func <EntitySet, string>)(s => s.Name))) { string schemaName = EFOracleDdlBuilder.GetSchemaName(entitySet); ++num; if (num > 1) { oracleDdlBuilder.AppendSql(" or "); } oracleDdlBuilder.AppendSql("("); oracleDdlBuilder.AppendSql("owner="); if (entitySet.Name != "HistoryRow" || entitySet.Name == "HistoryRow" && schemaName != "dbo") { oracleDdlBuilder.AppendSql("'"); oracleDdlBuilder.AppendSql(schemaName); oracleDdlBuilder.AppendSql("'"); } else { oracleDdlBuilder.AppendSql("user"); } oracleDdlBuilder.AppendSql(" and "); oracleDdlBuilder.AppendSql("table_name="); oracleDdlBuilder.AppendSql("'"); oracleDdlBuilder.AppendSql(EFOracleDdlBuilder.GetTableName(entitySet)); oracleDdlBuilder.AppendSql("'"); oracleDdlBuilder.AppendSql(")"); } } count = num; return(oracleDdlBuilder.GetCommandText()); }
internal static string DropDatabaseScript(string databaseName, StoreItemCollection itemCollection) { EFOracleDdlBuilder oracleDdlBuilder = new EFOracleDdlBuilder(); foreach (EntityContainer entityContainer in itemCollection.GetItems <EntityContainer>()) { entityContainer.BaseEntitySets.OfType <EntitySet>().OrderBy <EntitySet, string>((Func <EntitySet, string>)(s => s.Name)); foreach (EntitySet entitySet in (IEnumerable <EntitySet>)entityContainer.BaseEntitySets.OfType <EntitySet>().OrderBy <EntitySet, string>((Func <EntitySet, string>)(s => s.Name))) { oracleDdlBuilder.AppendSql("drop table "); oracleDdlBuilder.AppendIdentifier(entitySet); oracleDdlBuilder.AppendSql(" cascade constraints \n\n"); oracleDdlBuilder.AppendSql("drop sequence "); oracleDdlBuilder.AppendIdentifier(EFOracleDdlBuilder.GetSchemaName(entitySet)); oracleDdlBuilder.AppendSql("."); string str = OracleMigrationSqlGenerator.SequencePrefix + OracleMigrationSqlGenerator.NameSeparator + EFOracleDdlBuilder.GetTableName(entitySet); if (Encoding.UTF8.GetByteCount(str) > OracleMigrationSqlGenerator.MaxIdentifierLengthBytes) { str = OracleMigrationSqlGenerator.DeriveObjectName((string)null, str, 30); } oracleDdlBuilder.AppendIdentifier(str); oracleDdlBuilder.AppendSql("\n\n"); } } oracleDdlBuilder.AppendSql("drop table "); oracleDdlBuilder.AppendIdentifier("__MigrationHistory"); oracleDdlBuilder.AppendSql(" cascade constraints \n\n"); oracleDdlBuilder.AppendSql("drop table "); oracleDdlBuilder.AppendIdentifier("EdmMetadata"); oracleDdlBuilder.AppendSql(" cascade constraints \n\n"); return(oracleDdlBuilder.stringBuilder.ToString()); }
private void AppendIdentifier(EntitySet table, Action <string> AppendIdentifierEscape) { string tableName = EFOracleDdlBuilder.GetTableName(table); AppendIdentifierEscape(tableName); }
private void AppendCreateTable(EntitySet entitySet, string providerManifestToken) { if (entitySet.MetadataProperties["DefiningQuery"].Value != null) { this.AppendSql("-- Ignoring entity set with defining query: "); this.AppendIdentifier(entitySet, new Action <string>(this.AppendIdentifierEscapeNewLine)); this.ignoredEntitySets.Add(entitySet); } else { this.AppendSql("create table "); this.AppendIdentifier(entitySet); this.AppendSql(" ("); this.AppendNewLine(); foreach (EdmProperty property in entitySet.ElementType.Properties) { this.AppendSql(" "); this.AppendIdentifier(property.Name); this.AppendSql(" "); this.AppendType(property, providerManifestToken); this.AppendSql(","); this.AppendNewLine(); if (EFOracleDdlBuilder.m_bCreateSequenceAndTrigger) { string tableName = EFOracleDdlBuilder.GetTableName(entitySet); string text = (tableName.Length <= 12 ? tableName : tableName.Substring(0, 12)) + "_" + (property.Name.Length <= 11 ? property.Name : property.Name.Substring(0, 11)); EFOracleDdlBuilder oracleDdlBuilder1 = new EFOracleDdlBuilder(); oracleDdlBuilder1.AppendSql("\""); oracleDdlBuilder1.AppendSql(text); oracleDdlBuilder1.AppendSql("_"); oracleDdlBuilder1.AppendSql(property.TypeUsage.EdmType.Name.Substring(0, 2)); oracleDdlBuilder1.AppendSql("_"); oracleDdlBuilder1.AppendSql("sq"); oracleDdlBuilder1.AppendSql("\""); EFOracleDdlBuilder oracleDdlBuilder2 = new EFOracleDdlBuilder(); if (property.TypeUsage.EdmType.Name.ToLowerInvariant() != "guid" && property.TypeUsage.EdmType.Name.ToLowerInvariant() != "date") { oracleDdlBuilder2.AppendSql("create sequence "); oracleDdlBuilder2.AppendSql(oracleDdlBuilder1.GetCommandText()); oracleDdlBuilder2.AppendSql(" start with 1"); oracleDdlBuilder2.AppendSql(";\n\n"); } oracleDdlBuilder2.AppendSql(EFOracleDdlBuilder.CreateTrigger(EFOracleDdlBuilder.GetTableName(entitySet), property, "insert", oracleDdlBuilder1.GetCommandText())); EFOracleDdlBuilder.m_bCreateSequenceAndTrigger = false; if (EFOracleDdlBuilder.m_bStoreGeneratedPatternComputed) { oracleDdlBuilder2.AppendSql(EFOracleDdlBuilder.CreateTrigger(EFOracleDdlBuilder.GetTableName(entitySet), property, "update", oracleDdlBuilder1.GetCommandText())); } EFOracleDdlBuilder.m_bStoreGeneratedPatternComputed = false; EFOracleDdlBuilder.SequenceAndTriggerList.Add(oracleDdlBuilder2.GetCommandText()); } } this.AppendSql("CONSTRAINT \"PK_"); this.AppendSql(EFOracleDdlBuilder.GetTableName(entitySet)); this.AppendSql("\" primary key ("); this.AppendJoin <EdmMember>((IEnumerable <EdmMember>)entitySet.ElementType.KeyMembers, (Action <EdmMember>)(k => this.AppendIdentifier(k.Name)), ", "); this.AppendSql(")"); this.AppendNewLine(); if (EFOracleDdlBuilder.GetTableName(entitySet) == "__MigrationHistory") { this.AppendSql(")\n\n"); } else { this.AppendSql(");\n\n"); } } this.AppendNewLine(); }