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 迁移