Solusi dengan pencegat perintah
Itu pasti mungkin, meskipun ini sedikit meretas. Anda dapat mengubah perintah CREATE DATABASE dengan pencegat perintah. Saya akan mencegat semua perintah yang dikirim ke database, mengenali perintah pembuatan database berdasarkan ekspresi regex, dan mengubah teks perintah dengan susunan Anda.
Sebelum pembuatan basis data
DbInterception.Add(new CreateDatabaseCollationInterceptor("SQL_Romanian_Cp1250_CI_AS_KI_WI"));
Pencegat
public class CreateDatabaseCollationInterceptor : IDbCommandInterceptor
{
private readonly string _collation;
public CreateDatabaseCollationInterceptor(string collation)
{
_collation = collation;
}
public void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) { }
public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
{
// Works for SQL Server
if (Regex.IsMatch(command.CommandText, @"^create database \[.*]$"))
{
command.CommandText += " COLLATE " + _collation;
}
}
public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { }
public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) { }
public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { }
public void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) { }
}
Keterangan
Karena database dibuat dengan susunan yang benar sejak awal, semua kolom akan secara otomatis mewarisi susunan itu dan Anda tidak perlu MENGUBAHnya setelahnya.
Ketahuilah bahwa ini akan memengaruhi pembuatan basis data selanjutnya yang terjadi di dalam domain aplikasi. Jadi, Anda mungkin ingin menghapus pencegat setelah database dibuat.