【发布时间】:2021-04-28 17:13:25
【问题描述】:
我在将模型保存在数据库中时遇到了问题。 我得到了以下模型:
[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
【问题讨论】:
-
这是因为这一行:
modelBuilder.Entity<DataDetail>().HasOne(c => c.Data)...你是说你定义的实体有一个映射的Data属性——但你没有在你的实体中定义它。 IMO,我不确定它是否应该编译,因为Data不存在。 -
我没有添加所有字段但是....我不知道模型之间的关系才能在数据库中插入数据。我在读取数据时将它们考虑在内
-
因为您的 dbcontext 配置有这个 -
modelBuilder.Entity<DataDetail>().HasOne(c => c.Data)...=> 您是说您在 data_details 表中为数据定义了一个外键,在本例中为DataId。
标签: asp.net asp.net-core entity