实体框架生成的迁移,列被重命名而不是添加

时间:2019-05-07 03:58:56

标签: c# sql-server ef-code-first ef-migrations

我正在尝试更新实体以自我引用以创建父子关系。

更新后的实体

<script src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

但是当我尝试对数据库(public class Organisation : FullAuditedEntity<long> { ... public virtual long? ParentOrganisationId { get; set; } [ForeignKey(nameof(ParentOrganisationId))] public virtual Organisation ParentOrganisation { get; set; } [InverseProperty(nameof(ParentOrganisation))] public virtual ICollection<Organisation> SubOrganisations { get; set; } ... } )进行迁移时会出现问题,它会引发以下错误:

Update-Database
  

参数@objname模棱两可或声明的@objtype(COLUMN)错误。

我看到的唯一可以做的就是直接更新迁移文件以添加该列并删除我尝试过的重命名。它似乎工作正常。

EXECUTE sp_rename @objname = N'dbo.Organisations.OrganisationId', @newname = N'ParentOrganisationId', @objtype = N'COLUMN'

尽管我认为这可行,但我很好奇为什么所生成的迁移使用//RenameColumn(table: "dbo.Organisations", name: "OrganisationId", newName: "ParentOrganisationId"); AddColumn("dbo.Organisations", "ParentOrganisationId", c => c.Long(nullable: true)); 而不是RenameColumn

在另一个我建立了相同关系的实体中,似乎没有问题,尽管创建了表而不是像该实体那样对其进行更新,但它不会引发上述错误。

先谢谢您。

如果我找出原因,我会发布答案。

如果需要进一步的信息,请告诉我,我会进行相应的更新。

0 个答案:

没有答案