作为EF迁移的新手,我对以下行为感到惊讶,并想知道这是否是有意为之的(即是否有开关可以关闭它)。
当我重命名一个列时,在EntityTypeConfiguration类中,我有以下相关代码:
当我重命名一个列时,在EntityTypeConfiguration类中,我有以下相关代码:
Property(x => x.MyColumn).HasColumnName(@"MyColumn").HasColumnType("nvarchar").IsOptional();
而且,关键是:
HasOptional(a => a.RelatedTable).WithMany(b => b.ThisTable).HasForeignKey(c => c.MyColumn).WillCascadeOnDelete(false);
据我所知,这是建立外键关系。当我将MyColumn重命名为MyColumn2时,创建的迁移如下:
public override void Up()
{
RenameColumn(table: "dbo.ThisTable", name: "MyColumn", newName: "MyColumn2");
RenameIndex(table: "dbo.ThisTable", name: "IX_MyColumn", newName: "IX_MyColumn2");
}
然而,在ThisTable
中,MyColumn
并没有被索引。我意识到为外键关系创建索引是明智的;这就是为什么EF认为存在外键关系的原因吗?
请注意,EF模型最初是使用EF Reverse POCO Generator从数据库生成的。