public void Add (string title) { var scaffolder = new MigrationScaffolder (_config); var migration = scaffolder.Scaffold (title); //Because monodevelop/xamarin doesn't support resxfilecodegenerator, we can't user resx files properly //Another issue is lack of power shell support which force us to generate all cs/resx files manually and add them to //projet, what is why we are going to put all migration data to one file using ugly hacks //Code might stop working on future versions of Entity framework. //Add Migration Namespace migration.UserCode = "using System.Data.Entity.Migrations.Infrastructure;\n\n" + migration.UserCode; //Add IMigrationMetadata interface migration.UserCode = migration.UserCode.Replace ("DbMigration", "DbMigration, IMigrationMetadata"); //Insert IMigrationMetadate implementation migration.UserCode = migration.UserCode.Replace ("public override void Up()", string.Format ("\tstring IMigrationMetadata.Id {{\n\t\t\t" + "get {{ return \"{0}\"; }}\n\t\t" + "}}\n\n\t\t" + "string IMigrationMetadata.Source {{\n\t\t\t" + "get {{ return null; }}\n\t\t" + "}}\n\n\n\t\t" + "string IMigrationMetadata.Target {{\n\t\t\t" + "get {{ return \"{1}\"; }}\n\t\t}}" + "\n\n\tpublic override void Up()", migration.MigrationId, migration.Resources ["Target"])); File.WriteAllText (Path.Combine (_migrationFolder, migration.MigrationId + ".cs"), migration.UserCode); }
public void Upgrade_from_earlier_version_should_upgrade_history_table_when_updating_generated() { ResetDatabase(); var createTableOperation = GetLegacyHistoryCreateTableOperation(); createTableOperation.Columns.Remove(createTableOperation.Columns.Last()); createTableOperation.Columns.Add(new ColumnModel(PrimitiveTypeKind.String) { Name = "Hash" }); ExecuteOperations( createTableOperation, new SqlOperation( "INSERT INTO [__MigrationHistory] ([MigrationId], [CreatedOn], [Model]) VALUES ('000000000000000_ExistingMigration', GETDATE(), 0x1F8B0800000000000400ECBD07601C499625262F6DCA7B7F4AF54AD7E074A10880601324D8904010ECC188CDE692EC1D69472329AB2A81CA6556655D661640CCED9DBCF7DE7BEFBDF7DE7BEFBDF7BA3B9D4E27F7DFFF3F5C6664016CF6CE4ADAC99E2180AAC81F3F7E7C1F3F22FEC7BFF71F7CFC7BBC5B94E9655E3745B5FCECA3DDF1CE4769BE9C56B36279F1D947EBF67CFBE0A3DFE3E8374E1E9FCE16EFD29F34EDF6D08EDE5C369F7D346FDBD5A3BB779BE93C5F64CD78514CEBAAA9CEDBF1B45ADCCD66D5DDBD9D9D83BBBB3B777302F111C14AD3C7AFD6CBB658E4FC07FD79522DA7F9AA5D67E517D52C2F1BFD9CBE79CD50D317D9226F56D934FFEC236ADB54657EBC5A95C5346B099DDD8FD2E3B2C80895D77979FE9E78ED3C045E1FD91EA9CF53C2ADBDA67EDAAC58E63577CEFDB6F9BBF6A3F4AEC3EEAEA067867177601C8FBFC8562B22A8372EFD247DAD83DA7EFDFE782F04C6DD69B3097DDB535BD5D945DEF916E39AE5CF8ABA699F666D36C99AFCA3F464B688348B0C5F61DBF177C6F958FBBCCDA4769090261FA52FEBEAB2980181D7D74D9B2FC668307EFD8BCA93B2C897AD6BF045B62CCEF3A67D53BDCDC1A044A3AFCF160FEFEEEC812DEE36CDACBC156FF468B8814BFA54797CD71788C74FF3A6B820E89E782CF32958DD01356DCE96E715D16095D7EDF5EBBCF571354DCCD78AEC17799BCD08CFE3BA2DCEB3694B5F4FF3A6A179FB28FDC9AC5C5393D3C5249F9D2DBF5CB7AB757BDC34F962525E8763DADC3F8B4288F3E32F57F8CB6383AF3F0442B3A021E45F2E9FAC8B7266F17E969521ED874160CA3ECFE9735621AF5BFA995F5C5B482FAAE52D0129F99EE6AB7C3923967C932F5625016BBE5CBECE2EF361DC6EA66148B1C74F8BECA2CE163E05E513C5E475463D7B5D5007FE1BAE3FFAF3F15D28F4A3FF270000FFFF4817137F02060000)")); var migrator = CreateMigrator<ShopContext_v1>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration1"); migrator = CreateMigrator<ShopContext_v1>( automaticMigrationsEnabled: false, scaffoldedMigrations: new[] { generatedMigration }); Assert.False(ColumnExists(HistoryContext.TableName, "ProductVersion")); Assert.True(ColumnExists(HistoryContext.TableName, "Hash")); Assert.True(ColumnExists(HistoryContext.TableName, "CreatedOn")); migrator.Update(generatedMigration.MigrationId); Assert.True(ColumnExists(HistoryContext.TableName, "ProductVersion")); Assert.False(ColumnExists(HistoryContext.TableName, "Hash")); Assert.False(ColumnExists(HistoryContext.TableName, "CreatedOn")); }
public void Can_scaffold_on_sql_and_run_on_ce_after_initial_auto() { DatabaseProvider = DatabaseProvider.SqlClient; ResetDatabase(); var migrator = CreateMigrator<CrossProviderContext_v1>(); migrator.Update(); migrator = CreateMigrator<CrossProviderContext_v2>(); var scaffoldedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); DatabaseProvider = DatabaseProvider.SqlServerCe; ResetDatabase(); migrator = CreateMigrator<CrossProviderContext_v2>(scaffoldedMigrations: scaffoldedMigration); migrator.Update(); Assert.True(TableExists("MigrationsProducts")); Assert.False(ColumnExists("MigrationsProducts", "CustomerNumber")); }
public void Can_explicit_update_when_custom_history_factory() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1>(historyContextFactory: _testHistoryContextFactoryA); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); migrator = CreateMigrator<ShopContext_v1>( automaticMigrationsEnabled: false, scaffoldedMigrations: generatedMigration, historyContextFactory: _testHistoryContextFactoryA); migrator.Update(); Assert.True(TableExists("MigrationsCustomers")); Assert.True(TableExists("__Migrations")); migrator.Update("0"); Assert.False(TableExists("MigrationsCustomers")); Assert.False(TableExists("__Migrations")); var historyRepository = new HistoryRepository(ConnectionString, ProviderFactory, "MyKey", null); Assert.Null(historyRepository.GetLastModel()); }
public void Generate_when_empty_source_database_should_diff_against_empty_model() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); Assert.Equal(4, Regex.Matches(generatedMigration.UserCode, "CreateTable").Count); }
public void Can_generate_against_existing_model() { Can_generate_and_update_against_empty_source_model(); var migrator = CreateMigrator<ShopContext_v2>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration_v2"); Assert.Equal(2, Regex.Matches(generatedMigration.UserCode, "RenameTable").Count); }
public void Generate_should_create_custom_migration_step() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); Assert.NotNull(generatedMigration); Assert.True(generatedMigration.MigrationId.Contains("Migration")); }
public void Scaffold_throws_when_pending_migrations() { var migrator = CreateMigrator<ShopContext_v1>(); var migration = new MigrationScaffolder(migrator.Configuration).Scaffold("M1"); Assert.Equal( Strings.MigrationsPendingException(migration.MigrationId), Assert.Throws<MigrationsPendingException>( () => CreateMigrator<ShopContext_v1>( scaffoldedMigrations: new[] { migration }) .Scaffold("M2", "N", false)).Message); }
public void Can_script_windows(bool whenDatabaseExists) { ResetDatabase(); var migrator1 = CreateMigrator<ShopContext_v1>(); var version1 = new MigrationScaffolder(migrator1.Configuration).Scaffold("Version1"); CreateMigrator<ShopContext_v1>(scaffoldedMigrations: version1).Update(); var migrator2 = CreateMigrator<ShopContext_v2>(scaffoldedMigrations: version1); var version2 = new MigrationScaffolder(migrator2.Configuration).Scaffold("Version2"); CreateMigrator<ShopContext_v2>(scaffoldedMigrations: new[] { version1, version2 }).Update(); var migrator3 = CreateMigrator<ShopContext_v3>(scaffoldedMigrations: new[] { version1, version2 }); var version3 = new MigrationScaffolder(migrator3.Configuration).Scaffold("Version3"); var migrator4 = CreateMigrator<ShopContext_v3>(scaffoldedMigrations: new[] { version1, version2, version3 }); var scriptingDecorator = new MigratorScriptingDecorator(migrator4); if (!whenDatabaseExists) { ResetDatabase(); } // All var script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, null); Assert.True(script.Contains(CreateMetadataStatement)); Assert.True(script.Contains("Version1")); Assert.True(script.Contains("Version2")); Assert.True(script.Contains("Version3")); Assert.False(script.Contains("AutomaticMigration")); // 1 script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, version1.MigrationId); Assert.True(script.Contains(CreateMetadataStatement)); Assert.True(script.Contains("Version1")); Assert.False(script.Contains("Version2")); Assert.False(script.Contains("Version3")); Assert.False(script.Contains("AutomaticMigration")); // 1 & 2 script = scriptingDecorator.ScriptUpdate(DbMigrator.InitialDatabase, version2.MigrationId); Assert.True(script.Contains(CreateMetadataStatement)); Assert.True(script.Contains("Version1")); Assert.True(script.Contains("Version2")); Assert.False(script.Contains("Version3")); Assert.False(script.Contains("AutomaticMigration")); }
public void Can_generate_migration_with_store_side_renames() { ResetDatabase(); CreateMigrator<ShopContext_v1>().Update(); var migrator = CreateMigrator<ShopContext_v2>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); Assert.True(generatedMigration.UserCode.Contains("RenameTable")); WhenNotSqlCe(() => Assert.True(generatedMigration.UserCode.Contains("RenameColumn"))); }
public void GetMigrations_should_return_migrations_list() { var migrator = CreateMigrator<ShopContext_v1>(); Assert.True(!migrator.GetLocalMigrations().Any()); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); migrator = CreateMigrator<ShopContext_v1>( automaticMigrationsEnabled: false, scaffoldedMigrations: generatedMigration); Assert.Equal(1, migrator.GetLocalMigrations().Count()); }
public void Can_generate_and_update_against_empty_source_model() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration_v1"); migrator = CreateMigrator<ShopContext_v1>(false, scaffoldedMigrations: generatedMigration); migrator.Update(); Assert.True(TableExists("MigrationsProducts")); }
public void Can_generate_and_update_when_custom_default_schema() { DropDatabase(); var migrator = CreateMigrator<CustomSchemaContext2>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration_v1"); migrator = CreateMigrator<CustomSchemaContext2>(false, scaffoldedMigrations: generatedMigration); migrator.Update(); Assert.True(TableExists("bar.OrderLines")); Assert.True(TableExists("ordering.Orders")); Assert.True(TableExists("bar." + HistoryContext.TableName)); }
public void Can_update_generate_update_when_empty_target_database() { ResetDatabase(); CreateMigrator<ShopContext_v1>().Update(); Assert.True(TableExists("MigrationsProducts")); var migrator = CreateMigrator<ShopContext_v2>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); migrator = CreateMigrator<ShopContext_v2>(false, scaffoldedMigrations: generatedMigration); migrator.Update(); Assert.True(TableExists("crm.tbl_customers")); }
public void Auto_migration_when_functions_and_model_not_current_should_throw() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1>(); migrator.Update(); migrator = CreateMigrator<ShopContext_v2>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); migrator = CreateMigrator<ShopContext_v2>(scaffoldedMigrations: generatedMigration); ResetDatabase(); Assert.Throws<MigrationsException>(() => migrator.Update()) .ValidateMessage("AutomaticStaleFunctions"); }
public void Can_generate_and_update_when_custom_default_schemas() { ResetDatabase(); var migrator = CreateMigrator<CustomSchemaContext_v1>(); var generatedMigration1 = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration_v1"); migrator = CreateMigrator<CustomSchemaContext_v1>(false, scaffoldedMigrations: generatedMigration1); migrator.Update(); Assert.True(TableExists("foo.OrderLines")); Assert.True(TableExists("ordering.Orders")); Assert.True(TableExists("foo." + HistoryContext.TableName)); migrator = CreateMigrator<CustomSchemaContext_v2>(scaffoldedMigrations: generatedMigration1); var generatedMigration2 = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration_v2"); migrator = CreateMigrator<CustomSchemaContext_v2>( false, scaffoldedMigrations: new[] { generatedMigration1, generatedMigration2 }); migrator.Update(); WhenNotSqlCe( () => { Assert.False(TableExists("foo.OrderLines")); Assert.False(TableExists("foo." + HistoryContext.TableName)); }); Assert.True(TableExists("bar.OrderLines")); Assert.True(TableExists("ordering.Orders")); Assert.True(TableExists("bar." + HistoryContext.TableName)); migrator.Update("0"); Assert.False(TableExists("foo.OrderLines")); Assert.False(TableExists("ordering.Orders")); Assert.False(TableExists("foo." + HistoryContext.TableName)); }
public void Can_scaffold_on_sql_server_and_run_on_ce() { DatabaseProvider = DatabaseProvider.SqlClient; ResetDatabase(); var migrator = CreateMigrator<CrossProviderContext_v1>(); var scaffoldedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); DatabaseProvider = DatabaseProvider.SqlServerCe; ResetDatabase(); migrator = CreateMigrator<CrossProviderContext_v1>(scaffoldedMigrations: scaffoldedMigration); migrator.Update(); Assert.True(TableExists("MigrationsProducts")); }
public void ScaffoldInitialCreate_should_return_scaffolded_migration_when_db_initialized_and_schema_specified() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v5>(); var initialCreate = new MigrationScaffolder(migrator.Configuration).Scaffold("InitialCreate"); migrator = CreateMigrator<ShopContext_v5>(scaffoldedMigrations: initialCreate, contextKey: typeof(ShopContext_v5).FullName); migrator.Update(); migrator = CreateMigrator<ShopContext_v5>(contextKey: "NewOne"); var scaffoldedMigration = migrator.ScaffoldInitialCreate("Foo"); Assert.NotNull(scaffoldedMigration); Assert.NotSame(initialCreate, scaffoldedMigration); Assert.Equal(initialCreate.MigrationId, scaffoldedMigration.MigrationId); }
public void Can_generate_migration_from_user_code() { var migrator = new DbMigrator( new DbMigrationsConfiguration { ContextType = typeof(ShopContext_v1), MigrationsAssembly = SystemComponentModelDataAnnotationsAssembly, MigrationsNamespace = "Foo", MigrationsDirectory = "Bar" }); var migration = new MigrationScaffolder(migrator.Configuration).Scaffold("Test"); Assert.False(string.IsNullOrWhiteSpace(migration.DesignerCode)); Assert.False(string.IsNullOrWhiteSpace(migration.Language)); Assert.False(string.IsNullOrWhiteSpace(migration.MigrationId)); Assert.False(string.IsNullOrWhiteSpace(migration.UserCode)); Assert.False(string.IsNullOrWhiteSpace(migration.Directory)); }
public void Generate_should_emit_null_source_when_last_migration_was_explicit() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration1"); migrator = CreateMigrator<ShopContext_v1>(scaffoldedMigrations: generatedMigration); migrator.Update(); migrator = CreateMigrator<ShopContext_v2>(); generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration2"); Assert.True( generatedMigration.DesignerCode.Contains("return null") || generatedMigration.DesignerCode.Contains("Return Nothing")); }
public void Can_script_pending_migrations() { ResetDatabase(); var migrator1 = CreateMigrator<ShopContext_v1>(); var version1 = new MigrationScaffolder(migrator1.Configuration).Scaffold("Version1"); CreateMigrator<ShopContext_v1>(scaffoldedMigrations: version1).Update(); var migrator2 = CreateMigrator<ShopContext_v2>(scaffoldedMigrations: version1); var version2 = new MigrationScaffolder(migrator2.Configuration).Scaffold("Version2"); var migrator3 = CreateMigrator<ShopContext_v2>(scaffoldedMigrations: new[] { version1, version2 }); var scriptingDecorator = new MigratorScriptingDecorator(migrator3); var script = scriptingDecorator.ScriptUpdate(null, null); Assert.False(script.Contains("Version1")); Assert.True(script.Contains("Version2")); Assert.False(script.Contains("AutomaticMigration")); }
public void AddMigration(string name, bool ignoreChanges) { var config = FindDbMigrationsConfiguration(); // Scaffold migration. var scaffolder = new MigrationScaffolder(config); var migration = scaffolder.Scaffold(name, ignoreChanges); // Write the user code file. File.WriteAllText(Combine(MigrationsDir, migration.MigrationId + ".cs"), migration.UserCode); // Write needed resource values directly inside the designer code file. // Apparently, aspnet and resource files don't play well (or more specifically, // the way ef6 migration generator is interacting with the resources system) var targetValue = migration.Resources["Target"]; var designerCode = migration.DesignerCode .Replace("Resources.GetString(\"Target\")", $"\"{targetValue}\"") .Replace("private readonly ResourceManager Resources = new ResourceManager(typeof(InitialCreate));", ""); // Write the designer code file. File.WriteAllText(Path.Combine(MigrationsDir, migration.MigrationId + ".Designer.cs"), designerCode); }
public virtual void AddMigration( String migrationName, String contextTypeName, String rootNamespace, String projectDir) { var contextType = GetContextType(contextTypeName); var configurationType = GetConfigurationType(contextType); var configuration = CreateConfiguration(configurationType); var scaffolder = new MigrationScaffolder(configuration); var migration = scaffolder.Scaffold(migrationName); var migrationDirectory = Path.Combine(projectDir, migration.Directory); var migrationFile = Path.Combine(migrationDirectory, migration.MigrationId + "." + migration.Language); var migrationMetadataFile = Path.Combine(migrationDirectory, migration.MigrationId + ".Designer." + migration.Language); var designerCode = migration.DesignerCode .Replace("private readonly ResourceManager", "//private readonly ResourceManager"); foreach (var replaceKey in new[] { "Source", "Target" }) { if (migration.Resources.ContainsKey(replaceKey)) { var code = String.Format("Resources.GetString(\"{0}\")", replaceKey); var valueString = String.Format("\"{0}\"", migration.Resources[replaceKey]); designerCode = designerCode.Replace(code, valueString); } } Directory.CreateDirectory(migrationDirectory); File.WriteAllText(migrationFile, migration.UserCode); File.WriteAllText(migrationMetadataFile, designerCode); }
public void Can_use_per_provider_factory() { ResetDatabase(); try { MutableResolver.AddResolver<Func<DbConnection, string, HistoryContext>>(_ => _testHistoryContextFactoryA); var migrator = CreateMigrator<ShopContext_v1>(); var generatedMigration = new MigrationScaffolder(migrator.Configuration).Scaffold("Migration"); migrator = CreateMigrator<ShopContext_v1>( automaticMigrationsEnabled: false, scaffoldedMigrations: generatedMigration); migrator.Update(); Assert.True(TableExists("MigrationsCustomers")); Assert.True(TableExists("__Migrations")); migrator.Update("0"); Assert.False(TableExists("MigrationsCustomers")); Assert.False(TableExists("__Migrations")); var historyRepository = new HistoryRepository(ConnectionString, ProviderFactory, "MyKey", null); Assert.Null(historyRepository.GetLastModel()); } finally { MutableResolver.ClearResolvers(); } }
public void Can_update_when_explicit_migrations() { ResetDatabase(); var migratorA = CreateMigrator<ContextA>(); var generatedMigrationA = new MigrationScaffolder(migratorA.Configuration).Scaffold("MigrationA"); migratorA = CreateMigrator<ContextA>( contextKey: "KeyA", automaticMigrationsEnabled: false, scaffoldedMigrations: generatedMigrationA); migratorA.Update(); var migratorB = CreateMigrator<ContextB>(); var generatedMigrationB = new MigrationScaffolder(migratorB.Configuration).Scaffold("MigrationB"); migratorB = CreateMigrator<ContextB>( contextKey: "KeyB", automaticMigrationsEnabled: false, scaffoldedMigrations: generatedMigrationB); migratorB.Update(); Assert.True(TableExists("TenantAs")); Assert.True(TableExists("TenantBs")); migratorA.Update("0"); migratorB.Update("0"); Assert.False(TableExists("TenantAs")); Assert.False(TableExists("TenantBs")); }
public override void Run() { DbMigrationsConfiguration configuration = this.GetConfiguration(); MigrationScaffolder scaffolder = new MigrationScaffolder(configuration); string s2 = configuration.MigrationsNamespace; if (this.Language == "vb" && !string.IsNullOrWhiteSpace(this.RootNamespace)) { if (this.RootNamespace.EqualsIgnoreCase(s2)) { s2 = (string)null; } else { if (s2 == null || !s2.StartsWith(this.RootNamespace + ".", StringComparison.OrdinalIgnoreCase)) { throw Error.MigrationsNamespaceNotUnderRootNamespace((object)s2, (object)this.RootNamespace); } s2 = s2.Substring(this.RootNamespace.Length + 1); } } scaffolder.Namespace = s2; AppDomain.CurrentDomain.SetData("result", (object)this.Scaffold(scaffolder)); }
public void ScaffoldInitialCreate_should_return_scaffolded_migration_when_db_initialized() { ResetDatabase(); var migrator = CreateMigrator<ShopContext_v1b>(); var initialCreate = new MigrationScaffolder(migrator.Configuration).Scaffold("InitialCreate"); migrator = CreateMigrator<ShopContext_v1b>(scaffoldedMigrations: initialCreate, contextKey: typeof(ShopContext_v1b).FullName); migrator.Update(); migrator = CreateMigrator<ShopContext_v1b>(contextKey: "NewOne"); var scaffoldedMigration = migrator.ScaffoldInitialCreate("Foo"); Assert.NotNull(scaffoldedMigration); Assert.NotSame(initialCreate, scaffoldedMigration); Assert.Equal(initialCreate.MigrationId, scaffoldedMigration.MigrationId); WhenNotSqlCe( () => Assert.Contains("INSERT [dbo].[MigrationsCustomers]([CustomerNumber],", initialCreate.UserCode)); }
public void Can_set_non_standard_history_column_lengths() { ResetDatabase(); Func<DbConnection, string, HistoryContext> historyContextFactory = (c, s) => new NonStandardColumnWidthsContext(c, s); const string contextKey = "This context key is longer than 10 chars"; var migrator = CreateMigrator<ShopContext_v1>( contextKey: contextKey, historyContextFactory: historyContextFactory); var generatedMigration = new MigrationScaffolder(migrator.Configuration) .Scaffold("MigrationWithASomewhatLongName"); migrator = CreateMigrator<ShopContext_v1>( contextKey: contextKey, automaticMigrationsEnabled: false, scaffoldedMigrations: generatedMigration, historyContextFactory: historyContextFactory); migrator.Update(); var migrationIdColumn = TestDatabase.Info.Columns.Single(c => c.Name == "MigrationId"); Assert.Equal(20, migrationIdColumn.MaxLength); var contextKeyColumn = TestDatabase.Info.Columns.Single(c => c.Name == "ContextKey"); Assert.Equal(10, contextKeyColumn.MaxLength); migrator.Update("0"); }
protected override ScaffoldedMigration Scaffold(MigrationScaffolder scaffolder) { return(scaffolder.ScaffoldInitialCreate()); }
protected virtual ScaffoldedMigration Scaffold(MigrationScaffolder scaffolder) { return(scaffolder.Scaffold(MigrationName, IgnoreChanges)); }
protected override ScaffoldedMigration Scaffold(MigrationScaffolder scaffolder) { return scaffolder.ScaffoldInitialCreate(); }
protected virtual ScaffoldedMigration Scaffold(MigrationScaffolder scaffolder) { return scaffolder.Scaffold(MigrationName, IgnoreChanges); }
protected override void RunCore() { var configuration = GetConfiguration(); var scaffolder = new MigrationScaffolder(configuration); var @namespace = configuration.MigrationsNamespace; // Need to strip project namespace when generating code for VB projects // (The VB compiler automatically prefixes the project namespace) if (Language == "vb" && !string.IsNullOrWhiteSpace(RootNamespace)) { if (RootNamespace.EqualsIgnoreCase(@namespace)) { @namespace = null; } else if (@namespace != null && @namespace.StartsWith(RootNamespace + ".", StringComparison.OrdinalIgnoreCase)) { @namespace = @namespace.Substring(RootNamespace.Length + 1); } else { throw Error.MigrationsNamespaceNotUnderRootNamespace(@namespace, RootNamespace); } } scaffolder.Namespace = @namespace; var scaffoldedMigration = Scaffold(scaffolder); AppDomain.CurrentDomain.SetData("result", scaffoldedMigration); }