2014-03-01 26 views
10

在我的模型设定统一为假,我有一些实体饰以StringLength属性:实体框架6码第一:字符串属性

[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数据类型。 在这种情况下禁用unicode的正确方法是什么?

+0

我看到同样的事情。可能是新的PropertyConventionConfiguration API中的一个错误。 –

+0

谢谢@GertArnold,对此有任何的解决方法? –

回答

12

似乎是新的PropertyConventionConfiguration API中的错误(或遗漏)。以下配置可以工作,因此它可以作为解决方法:

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

非常好,它工作! –

+1

我将它作为一个错误提交[在这里](https://entityframework.codeplex.com/workitem/2125)。 –

+0

好@GertArnold,谢谢。 –