我正在使用带有 preview2 工具的 efcore.sqlserver 1.0.1 - 我有一个字符串属性,它在 sql server 中被创建为一个 nvchar(max) 字段。当我向属性添加数据注释 stringlength(100) 并添加新迁移时,迁移根本不会改变列。
但是,如果我添加 Required 和 StringLength 注释,则生成的迁移会更改列并显示 ( .. maxLength: 100, nullable: false )
为什么它只在我更改可为 null 的值时执行此操作?
最佳答案
我相信您需要使用 MaxLengthAttribute
而不是 StringLengthAttribute
。
https://docs.efproject.net/en/latest/modeling/max-length.html#data-annotations
这可能是因为 StringLength
属性有一个最小长度的选项,SQL 本身不支持它,因此 MaxLength
属性更适合这个用例。
需要说明的是,属性本身并没有影响。它们可以包含逻辑和信息,但必须在正常执行模型期间通过另一段代码的反射来使用。这是由编译器赋予特殊含义的某些属性除外,例如 Conditional
属性。
编辑
作者发现,当工具集从 RC2 => RTM 升级时,这是一个已知问题。
关于c# - 迁移中未应用的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388654/