gpt4 book ai didi

c# - 迁移中未应用的最大长度

转载 作者:太空狗 更新时间:2023-10-29 21:21:27 24 4
gpt4 key购买 nike

我正在使用带有 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 升级时,这是一个已知问题。

https://github.com/aspnet/Announcements/issues/195

关于c# - 迁移中未应用的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40388654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com