我有一个从Npgsql.EntityFrameworkCore.PostgreSQL 2.0.0升级到2.1.2的项目
我有两个类通过虚拟链接直接相互引用。
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual Account Account { get; set; }
}
public class Account
{
public string EMailAddress { get; set; }
public string DisplayName { get; set; }
public virtual User User { get; set; }
}
这工作正常,但是升级后我收到以下错误:
- $ exception {System.InvalidOperationException:无法确定'User.Account'和'Account.User'之间的一对一关系的子/依赖端。要标识关系的子级/从属端,请配置外键属性。如果这些导航不应该是相同关系的一部分,请在不指定反向关系的情况下进行配置。有关更多详细信息,请参见http://go.microsoft.com/fwlink/?LinkId=724062。
因此,在我的DataContext中,我通过添加
来设置外键protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<User>().HasOne(e => e.Account).WithOne(e => e.User).HasForeignKey<Account>(e => e.Id).OnDelete(DeleteBehavior.SetNull);
base.OnModelCreating(builder);
}
这允许程序编译和运行,但是每当我引用User时,Account为null,反之亦然。我不确定为什么现在需要显式映射我的外键,因为在升级之前并不需要它,甚至不知道现在使其正常工作。