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
似乎是新PropertyConventionConfiguration
API中的错误(或遗漏).以下配置确实有效,因此可以作为解决方法:
modelBuilder.Properties<string>().Configure(x => x.HasColumnType("VARCHAR"));
Run Code Online (Sandbox Code Playgroud)