首页 > 解决方案 > EF Core 5 列名“OwnerIdOwner”无效

问题描述

我有 2 个实体OwnerProperty,我想创建一个外键关系。

这些是实体:

public class Owner
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public long IdOwner { get; set; }
}

public class Property
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public long IdProperty { get; set; }
    public long IdOwner { get; set; }
}

具有上下文设置的文件:我已经使用注释和未注释的代码生成了迁移,OnModelCreating但我得到了相同的结果。

public DbSet<Owner> Owner { get; set; }
public DbSet<Property> Property { get; set; }

    /**
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Property>()
            .HasOne<Owner>()
            .WithMany()
            .HasForeignKey(p => p.IdOwner);
    }
    */

我迁移到 SQL Server,它创建表、列,但我不希望它创建OwnerIdOwner列,因为我的外键关系与IdOwner列,如屏幕截图所示:

在此处输入图像描述

如果我修改迁移文件并删除OwnerIdOwner属性以免Property在数据库中的表中创建列:

在此处输入图像描述

当我运行端点而不OwnerIdOwner在数据库中创建列时,我收到此错误:

消息:更新条目时发生错误。有关详细信息,请参阅内部异常。
来源:Microsoft.EntityFrameworkCore.Relational

列名“OwnerIdOwner”无效。
核心 Microsoft SqlClient 数据提供程序 207
{Microsoft.Data.SqlClient.SqlError:无效的列名'OwnerIdOwner'。}

我不明白它为什么会产生这个错误以及如何解决它。

任何帮助表示赞赏。

标签: entity-framework-coreasp.net-core-5.0ef-core-5.0

解决方案


推荐阅读