EF Code First - 在不最大化 DB 的情况下更改列最大长度

EF Code First - Change column max length without maxing out DB

我正在处理一个问题,即我们的大多数列都是使用默认 EF 行为创建的,该行为将字符串设为 nvarchar(max)。然而,这与索引结合得不好。

我尝试将 [MaxLength(100)] 属性放入特定列并生成迁移。这会生成 alter table 语句,即当数据库(包含大量数据)上的 运行 激增 DTU 并基本上破坏数据库时。

我现在正在寻找一种安全的方法来处理这个问题(假设列名是“FileName”):

  1. 使用 [MaxLength(100)].
  2. 创建一个列 FileNameV2
  3. 将数据从 FileName 列复制到 FileNameV2.
  4. 删除 文件名 列。
  5. FileNameV2 重命名为 FileName

这种方法行得通吗?有没有更好/更简单的方法(尤其是不会影响 EF 的方法)?

我后来发现的主要问题是我们的 SQL Azure 数据库有 最大大小 2 GB,所以当我进行更改时,数据库有 1, 5 GB 它可能在从 navarchar(max) 到 nvarchar(100) 的过渡时达到了它的大小。因此,学习是仔细检查 Azure 上的最大数据库大小,以确保您没有达到此阈值。