程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在asp.net core 3.1 实体错误中保存数据,它添加了字段大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在asp.net core 3.1 实体错误中保存数据,它添加了字段?

开发过程中遇到在asp.net core 3.1 实体错误中保存数据,它添加了字段的问题如何解决?下面主要结合日常开发的经验,给出你关于在asp.net core 3.1 实体错误中保存数据,它添加了字段的解决方法建议,希望对你解决在asp.net core 3.1 实体错误中保存数据,它添加了字段有所启发或帮助;

我在将模型保存在数据库中时遇到问题。 我得到了以下模型:

[table("data_details")]
    public class DataDetail
    {
        [Key]
        [display(name = "ID")]
        [column("ID")]
        public String ID { get; set; }

        [display(name = "qualification")]
        [column("qualification")]
        public decimal? qualification { get; set; }

        [display(name = "DATA CONfig ID")]
        [column("data_config_ID")]
        public String DataConfigID { get; set; } 
        public DataConfig DataConfig { get; set; }
    }

在我的 dbcontext 中,我是这样的

    modelBuilder.Entity<DataDetail>().HasOne(c => c.Dataconfig).WithMany(w => w.DataDetails).HasForeignKey(c => c.DataConfigID);

    modelBuilder.Entity<DataDetail>().HasOne(c => c.Data).WithMany(w => w.DataDetails).HasForeignKey(c => c.DataID);

保存时

 _context.Add(dataDetail);
_context.SaveChanges();

它试图保存,但在日志中我收到一个错误,就像它试图添加一个额外的字段

INSERT INTO `data_details` (`ID`,`qualification`,`data_config_ID`,`DataID`)
      VALUES (@p0,@p1,@p2,@p3);
Microsoft.EntityFrameworkCore.update[10000]
      An exception occurred in the database while saving changes for context type 'Systema.Data.SystemaContext'.
      Microsoft.EntityFrameworkCore.dbupdateException: An error occurred while updating the entrIEs. See the inner exception for details.
       ---> mysql.data.MysqLClIEnt.MysqLException (0x80004005): UnkNown column 'DataID' in 'fIEld List'

此表中根本未指定DataID :S

解决方法

在您的 dbcontext 中,您在 @H_729_5@many-to-many 和 Dataconfig 之间创建了 Data 关系。EFCore 将创建 DataConfigIdDataId 作为外部默认为 DataDetail 键。

添加 DataDetail 表示在 DataconfigData 之间创建关系。你添加的DataIdDataconfigId必须是已经存在的实体,否则会报错

您的代码应该是:

 public class Data
{
    public String Id { get; set; }
    public String Name { get; set; }
    public IEnumerable<DataDetail> DataDetails { get; set; }
}
public class DataDetail
{
    [Key]
    [Display(Name = "ID")]
    [column("id")]
    public String Id { get; set; }

    [Display(Name = "qualification")]
    [column("qualification")]
    public decimal? qualification { get; set; }

    [Display(Name = "DATA CONFIG ID")]
    [column("data_config_id")]
    public String DataConfigId { get; set; }
    public DataConfig DataConfig { get; set; }

    [Display(Name = "DATA Data ID")]
    [column("data_id")]
    public String DataId { get; set; }
    public Data Data { get; set; }
}
public class DataConfig
{
    public String Id { get; set; }
    public String Name { get; set; }
    public IEnumerable<DataDetail> DataDetails {get;set;}
}

关于many to many releationship。

大佬总结

以上是大佬教程为你收集整理的在asp.net core 3.1 实体错误中保存数据,它添加了字段全部内容,希望文章能够帮你解决在asp.net core 3.1 实体错误中保存数据,它添加了字段所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。