【问题标题】:Configure EF6 to use varchar as default instead of nvarchar?将 EF6 配置为默认使用 varchar 而不是 nvarchar?
【发布时间】:2014-01-24 13:25:40
【问题描述】:

我知道我可以为每个属性添加数据注释以将其列类型设置为 VARCHAR 但我有数百个列我想成为 VARCHAR 而不是 NVARCHAR 是否有某种方法可以设置 EF6这是默认的吗?

【问题讨论】:

    标签: ef-code-first entity-framework-6


    【解决方案1】:

    查找 EF 约定,我认为您可以这样做:

    modelBuilder.Properties<string>().Configure(c => c.HasColumnType("varchar"));
    

    我在很大程度上是从 http://msdn.microsoft.com/en-us/data/jj819164#order 中抄袭的,并且没有对其进行测试。

    [编辑:] 正如 @Shimmy 在 cmets 中指出的那样,还有 c =&gt; c.IsUnicode(false) 似乎在没有硬编码列类型的情况下做同样的事情。

    【讨论】:

    • 你知道这是否会覆盖数据注释吗?我有一些注释可以将几列设置为CHAR
    • 看起来数据注释将优先,因为它们是更具体的设置(最具体的胜利)。
    • @Jimmy,你回答中的设置和c.IsUnicode(false)有什么区别?
    • @Shimmy,我的回答明确设置了列类型,而 IsUnicode 看起来像一个更流畅的 API 来描述意图。从技术上讲,IsUnicode 的实现可能会确定最合适的列类型,并且如果引入了新类型,或者考虑到不同版本的 SQL 中支持的不同类型(尽管在这种情况下我认为一切都支持 varchar/nvarchar),它也会随着时间的推移而发展.
    • @Shimmy 看起来是这样,请参阅此文件中的第 920 行:entityframework.codeplex.com/SourceControl/latest#src/…
    猜你喜欢
    • 2013-01-27
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2021-12-22
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多