【问题标题】:Entity Framework Custom Convention Order实体框架自定义约定顺序
【发布时间】:2013-09-17 14:45:52
【问题描述】:

根据 Entity Framework 6 的 the custom convention spec,最后一个约定获胜。我看到了相反的行为。如果我使用这些约定:

modelBuilder.Properties<string>()
  .Where(x => x.GetCustomAttribute<UseMaxLengthAttribute>() != null)
  .Configure(c => c.HasMaxLength(int.MaxValue));

// by default, allows nvarchar columns to be indexed (900 byte max)
modelBuilder.Properties<string>().Configure(c => c.HasMaxLength(450));

那么在我的迁移中,所有string 列都是nvarchar(450),除非该属性具有[UseMaxLength] 属性。

如果我切换顺序(将默认值 HasMaxLength(450) 放在基于属性的约定之前),则所有字符串列的长度均为 450,忽略自定义属性。这似乎与规范规定的相反(最后应用的约定获胜)。

这是一个错误,还是我误解了规范?

【问题讨论】:

    标签: entity-framework entity-framework-6


    【解决方案1】:

    这是一个仍然存在于 rc1 中的错误,但已在夜间构建中修复,并将在发布中修复。有关夜间构建的更多信息,请查看此页面:https://entityframework.codeplex.com/wikipage?title=Nightly%20Builds 您还可以在 https://entityframework.codeplex.com/ 阅读和提交实体框架的错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多