EntityFrameworkCore 一表对多表存在外键的设计

表的基本设计

机械M由多个零件C组成
不同的零件有不同的属性,所以有C1,C2等等
由于零件的差异化,导致C1、C2不能通过统一的表C来表示
同时设计接口InterfaceC作为零件表的接口,整合一些统一的内容
综上所述,有表M,C1,C2和接口InterfaceC,C1、C2实现InterfaceC

遇到的问题

在M表中,定义

public virtual ICollection<InterfaceC> CList { get; set; }

在C1、C2表中定义

public int MId { get; set; }
public virtual M M { get; set; }

在M中配置

modelBuilder.Entity<M>().HasMany(x => x.CList)
    .WithOne(x => x.M)
    .HasForeignKey(x => x.MId);

报错:
The specified type 'InterfaceC’must be a non-interface reference type to be used as an entity type .
即ef core不能接受接口引用类型作为实体类型

解决方式

在M表中定义两个集合, 两个集合对应C1、C2表的两个外键

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值