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

标签 c# sql-server entity-framework-core

我正在使用带有 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/

相关文章:

c# - WinForm 尝试提交来自 CellValueChanged 事件的 DataGridView 更改

c# - 如何使用 SMO 列出当前正在运行的存储过程?

asp.net - 如何在 Entity Framework 7 中全局禁用延迟加载?

entity-framework-core - Entity Framework 核心一对一关系在 SQL Server 中生成一对多

c# - 如何逐字阅读课文

c# - 如何使用 TextMate 作为我的 IDE 在 C# 中编程?

sql-server - 批量插入 fmt 文本限定符

sql - 将数字列更改为日期

SQL查询-重复数据

c# - 根据子集合总和的比较执行单个查询