繁体   English   中英

EFCore 在一对一关系中生成的列名无效

[英]Invalid Column name generated by EFCore on a one-to-one relationship

我试图在我的上下文类中设置一对一的外键关系,但我不断收到以下错误。 我发现了一个类似的帖子,但这似乎并没有解决我的问题,因为我在模型中明确指定了关系。 我确认:

  • 服务器对象引用了一个 ServerList 对象(公共虚拟 ServerList 对象)
  • ServerList 对象通过(公共虚拟服务器对象)对服务器(导航属性??)有一个引用

我试图通过在 ServerList.ServerName 列中添加注释ForeignKey("ServerId")来解决这个问题,但这没有用。 为什么 EFCore 尝试创建此列? 为什么 ForeignKey 注释没有解决这个问题?

无效的列名“ServerListServerName”。

我的上下文类:

   modelBuilder.Entity<Server>(entity =>
    {   
        entity.HasOne(d => d.ServerList)
            .WithOne(p => p.AwsServer)
            .HasForeignKey<Server>(d => d.ServerName);
    });

服务器.cs:

public partial class Server
{
    [Key]
    public int ServerId { get; set; }
    public string ServerName { get; set; }

    public virtual ICollection<PockAdvCompany> Companies { get; set; }
    public virtual ParentServer ParentServer { get; set; }
    public virtual ServerList ServerList { get; set; }
}

服务器列表.cs:

public partial class ServerList
{
    public virtual ICollection<PockAdvCompany> Companies { get; set; }
    public virtual Server AwsServer { get; set; }

    [Key,Column("ServerId")]
    public string ServerName { get; set; }
}

这是因为您的ForeignKey("ServerId")不是ServerList的属性,而是Server的属性。它应该是将该类指向其父类的属性名称。 ServerList FK 也是string ,但 PK 是int试试这个

public partial class ServerList
{
    public virtual ICollection<PockAdvCompany> Companies { get; set; }
    public virtual Server AwsServer { get; set; }

    [ForeignKey("AwsServer")]
    public int ServerId { get; set; }
}

希望这有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM