首页 新闻 会员 周边 捐助

net core ef 使用报错 Unknown column

0
[已解决问题] 解决于 2018-07-04 16:28

项目使用 core 2.1 版本,ef 也是支持 延迟加载了

调试一个查询页面 出现如下问题,

MySqlException: Unknown column 'p.PPX_FreightTemplateId' in 'field list'

基本的查询ef 语句就是 var list = Context.ProductInfo.ToList();

ProductInfo 的定义里边是有FreightTemplateId属性,DB表里也存在该字段,bigint(20) --> long,  同时 还有一个 public virtual FreightTemplateInfo PPX_FreightTemplate { get; set; } 的定义(DB里边有 PPX_FreightTemplate 表,同时  PPX_FreightTemplate  类中也有 public virtual ICollection<ProductInfo> PPX_Products { get; set; } 的定义)。

FreightTemplateId这个字段在三个model里边出现过,但是对应的表里边 也都有字段定义,

搜索整个项目,没有 PPX_FreightTemplateId 的定义,所以这个错误是指哪里的定义在DB中不存在? 

死神的背影的主页 死神的背影 | 小虾三级 | 园豆:667
提问于:2018-07-04 12:25
< >
分享
最佳答案
0

PPX_FreightTemplate类有没有 IdPPX_FreightTemplateId 字段,如果没有,需要通过 builder.Entity<PPX_FreightTemplate>().HasKey() 定义一下主键字段

奖励园豆:5
dudu | 高人七级 |园豆:29568 | 2018-07-04 12:55

每个类都有定义id 字段的, 

继承了 baseModel 

public long Id { get; set; }

 

如果有两个主子表,A 和 B, A是主表,对应B的多个记录,那么是不是 model是这样定义

class A
{

  public virtual ICollection<B> BList{get;set;}
}

class B
{

  public A ObjA {get;set;} 
}

 

死神的背影 | 园豆:667 (小虾三级) | 2018-07-04 14:23

是没有拉外键的关系导致的吗? product 表里边没有创建 FreightTemplate 的外键,dbcontext 里边也没有定义  entity.HasForeignKey .... 这个东西

死神的背影 | 园豆:667 (小虾三级) | 2018-07-04 16:04
其他回答(1)
0

找到问题了,model 里边 互相定义了 外键引用关系,类似

class A
{

  public virtual ICollection<B> BList{get;set;}
}

class B
{

  public A ObjA {get;set;} 
}

,但是Builder 里边没有定义两者的外键关系,DB里边也没创建这个外键关系,因此ef 从代码上认为有外键引用关系,自动用默认的 外键对象+Id 作为外键字段去执行了,所以会报找不到这个 字段

死神的背影 | 园豆:667 (小虾三级) | 2018-07-04 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册