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
                    }
                });
            }
        }
Esempio n. 2
0
 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
         }
     });
 }