从Npgsql.EntityFrameworkCore.PostgreSQL 2.0.0升级到2.1.2外键问题

时间:2018-11-06 21:32:21

标签: c# postgresql entity-framework-core

我有一个从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,反之亦然。我不确定为什么现在需要显式映射我的外键,因为在升级之前并不需要它,甚至不知道现在使其正常工作。

0 个答案:

没有答案