我们刚刚将Entity Framework Core从2.1更新到2.2.Preview3。 似乎迁移器/模型构建器已更改,我想知道这是错误还是修复。
如果具有以下实体:
public class User {
public string UserName { get; set; }
public Guid? PasswordGUID { get; set; }
[ForeignKey("PasswordGUID")]
public Password Password { get; set; }
}
实体类密码没有实体类User的导航属性。
在EfCore 2.1中,用户密码关系在模型快照中具有以下几行:
...
u.Property<Guid?>("PasswordGUID");
...
u.HasIndex("PasswordGUID");
...
u.HasOne("Password", "Password")
.WithMany()
.HasForeignKey("PasswordGUID");
现在从EfCore 2.1升级到2.2.Preview3(实体类未更改)后,模型进行了以下更改:
...
u.Property<Guid?>("PasswordGUID")
.IsRequired();
...
u.HasIndex("PasswordGUID")
.IsUnique();
...
u.HasOne("Password", "Password")
.WithOne()
.HasForeignKey("PasswordGUID")
.OnDelete(DeleteBehavior.Cascade);
因此,如上所述,我的问题是:这是正确的吗?现在我是否必须在ModelBuilder Fluent API中“还原”这些更改,或者这是一个错误?
旁注:奇怪的是,当我删除属性“ [ForeignKey(“ PasswordGUID”)]“
时,我注意到EfCore 2.1具有相同的行为