Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Задайте съпоставяне на база данни в Entity Framework Code-First Initializer

Решение с прехващач на команди

Определено е възможно, макар че е малко хак. Можете да промените командата CREATE DATABASE с прехващач на команди. Ще прихвана всички команди, изпратени до базата данни, ще разпознае командата за създаване на база данни въз основа на израз на регулярни изрази и ще променя текста на командата с вашето съпоставяне.

Преди създаването на база данни

DbInterception.Add(new CreateDatabaseCollationInterceptor("SQL_Romanian_Cp1250_CI_AS_KI_WI"));

Прехващачът

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) { }
}

Забележки

Тъй като базата данни е създадена с правилното съпоставяне от самото начало, всички колони автоматично ще наследят това съпоставяне и не е нужно да ги ПРОМЕНЯТЕ след това.

Имайте предвид, че това ще повлияе на всяко по-късно създаване на база данни, което се случва в домейна на приложението. Така че може да искате да премахнете прехващача след създаването на базата данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върнете само числови стойности в SQL Server

  2. Как да генерирате изявления за вмъкване от данни на Excel и да заредите в таблица на SQL Server - SQL Server / TSQL урок, част 103

  3. Математически функции на SQL Server (пълен списък)

  4. SQL Server:Открийте стойността по подразбиране на колона със заявка

  5. Как бихте внедрили последователности в Microsoft SQL Server?