簡體   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