// 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); }
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); }
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')"); }