// based on: https://github.com/dotnet/efcore/blob/v3.1.6/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs#L777
        protected override void Generate(SqlServerCreateDatabaseOperation operation, IModel?model, MigrationCommandListBuilder builder)
        {
            base.Generate(operation, model, builder);

            // https://github.com/aspnet/EntityFrameworkCore/issues/6577#issuecomment-475172948
            builder
            .Append("ALTER DATABASE ")
            .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name))
            .Append(" COLLATE ")
            .Append(_caseSensitiveCollation)
            .AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator)
            .EndCommand(suppressTransaction: true);
        }
예제 #2
0
        protected override void Generate(SqlServerCreateDatabaseOperation operation,
                                         IModel model,
                                         MigrationCommandListBuilder builder)
        {
            base.Generate(operation, model, builder);

            builder
            .Append("ALTER DATABASE ")
            .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name))
            .Append(" COLLATE ")
            .Append(DatabaseCollationName)
            .AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator)
            .EndCommand(suppressTransaction: true);
        }
예제 #3
0
        protected virtual void Generate(
            [NotNull] SqlServerCreateDatabaseOperation operation,
            [CanBeNull] IModel model,
            [NotNull] MigrationCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("CREATE DATABASE ")
            .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name));

            if (!string.IsNullOrEmpty(operation.FileName))
            {
                var fileName = ExpandFileName(operation.FileName);
                var name     = Path.GetFileNameWithoutExtension(fileName);

                var logFileName = Path.ChangeExtension(fileName, ".ldf");
                var logName     = name + "_log";

                // Match default naming behavior of SQL Server
                logFileName = logFileName.Insert(logFileName.Length - ".ldf".Length, "_log");

                builder
                .AppendLine()
                .Append("ON (NAME = '")
                .Append(Dependencies.SqlGenerationHelper.EscapeLiteral(name))
                .Append("', FILENAME = '")
                .Append(Dependencies.SqlGenerationHelper.EscapeLiteral(fileName))
                .Append("')")
                .AppendLine()
                .Append("LOG ON (NAME = '")
                .Append(Dependencies.SqlGenerationHelper.EscapeLiteral(logName))
                .Append("', FILENAME = '")
                .Append(Dependencies.SqlGenerationHelper.EscapeLiteral(logFileName))
                .Append("')");
            }

            builder
            .AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator)
            .EndCommand(suppressTransaction: true)
            .Append("IF SERVERPROPERTY('EngineEdition') <> 5 EXEC(N'ALTER DATABASE ")
            .Append(Dependencies.SqlGenerationHelper.DelimitIdentifier(operation.Name))
            .Append(" SET READ_COMMITTED_SNAPSHOT ON")
            .Append(Dependencies.SqlGenerationHelper.StatementTerminator)
            .Append("')")
            .AppendLine(Dependencies.SqlGenerationHelper.StatementTerminator)
            .EndCommand(suppressTransaction: true);
        }
        protected virtual void Generate(
            [NotNull] SqlServerCreateDatabaseOperation operation,
            [CanBeNull] IModel model,
            [NotNull] RelationalCommandListBuilder builder)
        {
            Check.NotNull(operation, nameof(operation));
            Check.NotNull(builder, nameof(builder));

            builder
            .Append("CREATE DATABASE ")
            .Append(SqlGenerationHelper.DelimitIdentifier(operation.Name))
            .AppendLine(SqlGenerationHelper.StatementTerminator)
            .EndCommand()
            .Append("IF SERVERPROPERTY('EngineEdition') <> 5 EXEC(N'ALTER DATABASE ")
            .Append(SqlGenerationHelper.DelimitIdentifier(operation.Name))
            .Append(" SET READ_COMMITTED_SNAPSHOT ON')");
        }