Изменить сортировку базы данных после миграции?
===============================================

 У меня есть проект `MVC5` и я заполнил свои таблицы в базе данных через `Entity Framework 6 - Code First` миграцией `Entity Framework 6 - Code First` . Когда вы смотрите на таблицы, я уверен, что некоторые символы не отображаются правильно, а `Database Collation` - это `SQL_Latin1_General_CP1_CI_AS` вместо `French_CI_AS` . 

 **1)** Что нужно сделать для того, чтобы установить `Database Collation` при создании базы данных через `Code First` ? Я нашел следующий метод ниже, но не уверен, что это лучший вариант для этой цели? 

```
public override void Up()
{
    Sql("ALTER DATABASE [YourDB] COLLATE [YourCollation]", suppressTransaction: true);
    [...Your DB Objects Creation codes here...]
}

```
  С другой стороны, при использовании этого скрипта я сталкиваюсь с ошибкой *«ALTER DATABASE». Значение по умолчанию для базы данных «DbName» не может быть установлено на* ошибку *French\_CI\_AS »* . 

 **2)** Можно ли изменить `Database Collation` (через код First или SQL) после добавления некоторых данных в связанные таблицы? 

 Любая помощь будет оценена ... 

 Должна быть возможность изменить сортировку даже после добавления данных. Думаю, ваша проблема связана с тем, что вам нужно поместить базу данных в однопользовательский режим, пока вы выполняете изменение сортировки. База данных должна быть заблокирована для предотвращения использования другими подключениями. После того, как вы закончите, вы восстановите многопользовательский режим. 

 Если это ваш случай, вы должны получить эту ошибку в дополнение к той, которую вы показываете в своем вопросе: 

>  Для выполнения операции база данных не может быть заблокирована исключительно. 
> 
> 

 Код миграции для его исправления: 

```
public override void Up()
{
    Sql("ALTER DATABASE [YourDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;");

    Sql("ALTER DATABASE [YourDB] COLLATE [YourCollation];");

    Sql("ALTER DATABASE [YourDB] SET MULTI_USER;");

    [...Your DB Objects Creation codes here...]
}

```
  Я думаю, вы должны удалить параметр `supressTransaction` . Вероятно, вы должны запустить эту операцию в одной транзакции, если какой-то шаг завершится неудачно.