gpt4 book ai didi

c# - EFCore 在一对一关系上生成的列名无效

转载 作者:行者123 更新时间:2023-12-05 08:06:44 25 4
gpt4 key购买 nike

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

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

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

Invalid column name '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; }
}

希望对你有帮助

关于c# - EFCore 在一对一关系上生成的列名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59112360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com