我正在使用带有preview2工具的efcore.sqlserver 1.0.1 – 我有一个字符串属性,它在sql server中创建为nvchar(max)字段.当我向属性添加数据注释stringlength(100)并添加新迁移时,迁移根本不会改变列.
但是,如果我添加一个required和StringLength注释,则生成的迁移会更改列并显示(.. maxLength:100,nullable:false)
为什么只有在我改变可以为空的值时才这样做?
解决方法
我相信你需要使用MaxLengthAttribute而不是StringLengthAttribute.
https://docs.efproject.net/en/latest/modeling/max-length.html#data-annotations
这可能是因为StringLength属性具有最小长度选项,sql本身不支持该选项,因此MaxLength属性更适合此用例.
需要明确的是,属性本身没有任何影响.它们可以包含逻辑和信息,但必须在正常执行模型中通过另一段代码的反射来使用.除了编译器赋予特殊含义的某些属性之外,例如Conditional属性.
编辑
作者发现,对于从RC2 =>升级工具集的情况,这是一个已知问题. RTM.