Code First 迁移中未包含 StringLength 属性的更改

Posted

技术标签:

【中文标题】Code First 迁移中未包含 StringLength 属性的更改【英文标题】:Change of StringLength attribute not included in Code First Migration 【发布时间】:2016-07-20 17:14:43 【问题描述】:

我有一个具有以下属性的字段:

[Column("Name")]
[StringLength(50)]
public string Name  get; set; 

该字段的迁移如下所示:

CreateTable(
"dbo.TEST",
c => new

     Id = c.Int(nullable: false),
     Name = c.String(maxLength: 50),
)
.PrimaryKey(t => t.Id)
.Index(t => t.Id
);

然后我像这样更改了字段:

[Column("Test_Name")]
[StringLength(255)]
public string TestName  get; set; 

并执行了Add-Migration,但未包含StringLength 更改,它在我的Oracle DB 中仍然是NVARCHAR2(50),新的迁移如下所示:

RenameColumn(table: "dbo.TEST", name: "Name", newName: "Test_Name");

这是一个常见的问题吗?

我需要做什么才能在数据库中更改长度?

【问题讨论】:

你可能需要破解 Up() 代码:***.com/questions/28299080/… 【参考方案1】:

您已经进行了多少次迁移?在积累了大约 20 次迁移后,我们开始在创建迁移脚本时遇到错误。如果您有超过 10 次迁移,请尝试consolidate them。当我进行整合时,迁移脚本的生成开始正常工作。

【讨论】:

谢谢。很高兴知道,但到目前为止我只有 5 个。 试一试,删除所有迁移并创建一个绿色字段 inital 以查看是否是因为 EF 中的错误。

以上是关于Code First 迁移中未包含 StringLength 属性的更改的主要内容,如果未能解决你的问题,请参考以下文章

C# EntityFramework Code First 迁移

Code First 迁移

Code-First 迁移问题

Code First 迁移

20.翻译系列:Code-First中的数据库迁移技术EF 6 Code-First系列

EFEF Code-First数据迁移