0

根据Entity Framework 6的自定义约定规范,最后一个约定胜出。我看到了相反的行为。如果我使用这些约定:

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,忽略自定义属性。这似乎与规范规定的相反(最后应用的约定获胜)。

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

4

1 回答 1

0

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

于 2013-10-09T23:03:16.643 回答