Сначала введите код Entity Framework 6: установка unicode в false для свойств строки

В моей модели у меня есть некоторые объекты, украшенные атрибутом StringLength:

[StringLength(128)]    
public string FirstName { get; set; }

Также я отключил unicode для всех свойств строки следующим образом:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Properties<string>().Configure(p => p.IsUnicode(false));            
}

Проблема в том, что все свойства строки, украшенные указанным атрибутом, игнорируют этот параметр при создании схемы базы данных, создавая тип данных nvarchar для соответствующих столбцов базы данных. Каков правильный способ отключения юникода в этом случае?

Ответ 1

Кажется, это ошибка (или упущение) в новом API PropertyConventionConfiguration. Следующая конфигурация работает, поэтому она может работать как работа:

modelBuilder.Properties<string>().Configure(x => x.HasColumnType("VARCHAR"));