未找到实体框架插入字段的错误

时间:2021-07-20 06:33:20

标签: c# entity-framework blazor

我在实体框架插入时出错。当我想在子表中添加记录时,我收到了未找到字段的错误。 这是我的主要表类,如下所示:

public class Rcp
    {
        public Rcp()
        {
            RcpFl  = new HashSet<RcpFiles>();
        }

        [Column("Rcp_ID")]
        public int RcpId { get; set; }
        public String RcpTitle { get; set; }
        public virtual ICollection<RcpFiles> RcpFl { get; set; }
    }

这是我的子表类:

 public class RcpFiles
    {
        [Key]
        public int RcpFile_Id { get; set; }
        public byte[] Photo { get; set; }
        public virtual Rcp rcp { get; set; }
    }

在插入时出现错误字段找不到“RcpFile_Id”

2 个答案:

答案 0 :(得分:1)

您依赖于有关属性名称的约定。这是使用注释指定关系的方式。

public class Rcp
{
    public Rcp()
    {
        RcpFl  = new HashSet<RcpFiles>();
    }

    [Key]
    [Column("Rcp_ID")]
    public int RcpId { get; set; }

    public String RcpTitle { get; set; }

    [InverseProperty(nameof(RcpFiles.rcp))]
    public virtual ICollection<RcpFiles> RcpFl { get; set; }
}
public class RcpFiles
{
    [Key]
    public int RcpFile_Id { get; set; }

    public byte[] Photo { get; set; }

    [Column("Rcp_ID")]
    public int RcpId { get; set; }

    [ForeignKey(nameof(RcpId))]
    public virtual Rcp rcp { get; set; }
}

答案 1 :(得分:1)

看来你们是一对多的关系。

首先,您必须向 RcpFiles 实体添加外键属性:

public class RcpFiles
    {
        [Key]
        public int RcpFile_Id { get; set; }
        public byte[] Photo { get; set; }
        public virtual Rcp rcp { get; set; }
        public int RcpId { get; set; }
    }

然后你必须设置配置。您有两种选择:

拳头是Fluent API

public class SchoolContext : DbContext
{
    public DbSet<RcpFiles> RcpFiles { get; set; }
    public DbSet<Rcp> Rcpes{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // configures one-to-many relationship
        modelBuilder.Entity<RcpFiles>()
            .HasRequired<Rcp>(s => s.rcp)
            .WithMany(g => g.RcpFl)
            .HasForeignKey<int>(s => s.RcpId); 
    }
}

第二个是Data annotiation:这部分由@brian-parker (https://stackoverflow.com/users/1492496/brian-parker) 解释

有关更多信息,您可以查看:https://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx