【发布时间】: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