internal static IEnumerable <MigrationStatement> GenerateMigrationStatements(TransactionContext context) { if (DbConfiguration.DependencyResolver.GetService <Func <MigrationSqlGenerator> >(context.InternalContext.ProviderName) != null) { var migrationSqlGenerator = context.InternalContext.MigrationsConfiguration.GetSqlGenerator(context.InternalContext.ProviderName); var connection = context.Database.Connection; var emptyModel = new DbModelBuilder().Build(connection).GetModel(); var createTableOperation = (CreateTableOperation) new EdmModelDiffer().Diff(emptyModel, context.GetModel()).Single(); var providerManifestToken = context.InternalContext.ModelProviderInfo != null ? context.InternalContext.ModelProviderInfo.ProviderManifestToken : DbConfiguration .DependencyResolver .GetService <IManifestTokenResolver>() .ResolveManifestToken(connection); return(migrationSqlGenerator.Generate(new[] { createTableOperation }, providerManifestToken)); } else { return(new[] { new MigrationStatement { Sql = ((IObjectContextAdapter)context).ObjectContext.CreateDatabaseScript(), SuppressTransaction = true } }); } }
internal static IEnumerable <MigrationStatement> GenerateMigrationStatements( TransactionContext context) { if (DbConfiguration.DependencyResolver.GetService <Func <MigrationSqlGenerator> >((object)context.InternalContext.ProviderName) != null) { MigrationSqlGenerator sqlGenerator = context.InternalContext.MigrationsConfiguration.GetSqlGenerator(context.InternalContext.ProviderName); DbConnection connection = context.Database.Connection; CreateTableOperation createTableOperation = (CreateTableOperation) new EdmModelDiffer().Diff(new DbModelBuilder().Build(connection).GetModel(), context.GetModel(), (Lazy <ModificationCommandTreeGenerator>)null, (MigrationSqlGenerator)null, (string)null, (string)null).Single <MigrationOperation>(); string providerManifestToken = context.InternalContext.ModelProviderInfo != null ? context.InternalContext.ModelProviderInfo.ProviderManifestToken : DbConfiguration.DependencyResolver.GetService <IManifestTokenResolver>().ResolveManifestToken(connection); return(sqlGenerator.Generate((IEnumerable <MigrationOperation>) new CreateTableOperation[1] { createTableOperation }, providerManifestToken)); } return((IEnumerable <MigrationStatement>) new MigrationStatement[1] { new MigrationStatement() { Sql = ((IObjectContextAdapter)context).ObjectContext.CreateDatabaseScript(), SuppressTransaction = true } }); }