配置EF6使用varchar作为默认值而不是nvarchar?

Mat*_*ete 19 ef-code-first entity-framework-6

我知道我可以为每个属性添加一个数据注释来设置它的列类型VARCHAR但是我有数百个列我想要VARCHAR而不是NVARCHAR有一些方法来设置EF6使其成为默认值吗?

Jim*_*mmy 29

查看EF约定,我认为你可以这样做:

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

我在很大程度上从http://msdn.microsoft.com/en-us/data/jj819164#order中删除了这个并没有测试过它.

[编辑:]正如@Shimmy在评论中指出的那样,在c => c.IsUnicode(false)没有硬编码列类型的情况下,似乎也会做同样的事情.

  • @Jimmy,答案中的设置和`c.IsUnicode(false)`之间有什么区别? (4认同)
  • 看起来数据注释将优先,因为它们是更具体的设置(最具体的获胜). (2认同)
  • @Shimmy看起来就是这样,请参阅此文件中的第920行:https://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework.SqlServer/SqlProviderServices.cs (2认同)