实体框架6代码优先:将字符串属性的unicode设置为false

E-B*_*Bat 13 entity-framework ef-code-first

在我的模型中,我有一些用StringLength属性修饰的实体:

[StringLength(128)]    
public string FirstName { get; set; }
Run Code Online (Sandbox Code Playgroud)

此外,我已通过这种方式禁用所有字符串属性的unicode:

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

问题是,在生成数据库模式时,使用上述属性修饰的所有字符串属性都会忽略此设置,从而为相应的数据库列生成nvarchar数据类型.在这种情况下,禁用unicode的正确方法是什么?

Ger*_*old 13

似乎是新PropertyConventionConfigurationAPI中的错误(或遗漏).以下配置确实有效,因此可以作为解决方法:

modelBuilder.Properties<string>().Configure(x => x.HasColumnType("VARCHAR"));
Run Code Online (Sandbox Code Playgroud)