我有这样的实体:
public class Foo
{
public int Id { get; set; }
public Bar Bar { get; set; }
public Bar2 Bar2 { get; set; }
}
public class Bar
{
public int Id { get; set; }
public string Description { get; set; }
}
public class Bar2
{
public int Id { get; set; }
public string Description { get; set; }
}
哪些迁移是:
CreateTable(
"dbo.Bar",
c => new
{
Id = c.Int(nullable: false, identity: true),
Description = c.String(),
})
.PrimaryKey(t => t.Id);
CreateTable(
"dbo.Bar2",
c => new
{
Id = c.Int(nullable: false, identity: true),
Description = c.String(),
})
.PrimaryKey(t => t.Id);
CreateTable(
"dbo.Foo",
c => new
{
Id = c.Int(nullable: false, identity: true),
Bar_Id = c.Int(),
Bar2_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Bar", t => t.Bar_Id)
.ForeignKey("dbo.Bar2", t => t.Bar_Id)
.Index(t => t.AlertCause_Id)
然后我在Foo中将Bar属性设置为virtual
并且它打破了“AutomaticMigrationsDisabledException:无法更新数据库以匹配当前模型,因为存在挂起的更改并且禁用了自动迁移。”在迁移重新构建脚本之后,代码只会在Bar_Id
变为BarId
时发生变化,但对于Bar2
,它仍然是Bar2_Id
。所以我想知道为什么它会让我重新支持迁移,如果它似乎没有改变任何东西?是的,它需要代理类和延迟加载等,但为什么要进行新的迁移?谢谢!
更新
我错过了迁移实际上是由添加外键属性BarId
触发的。所以我的错误在这里。
答案 0 :(得分:0)
BarID
),因此触发了迁移,这是一个不正确的问题。我的错。关闭它。