菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

Code first 配置多对多关系

6152人阅读 2021/3/26 17:57 总访问:1020421 评论:0 收藏:0 手机
分类: EF

配置多对多关系,应该有一个中间表,用于关联,关联表至少两个字段,就是两张表的id

  1. //默认导航属性
  2. //先定义一个中间表
  3.   public class CenterTable
  4.     {
  5.         public int Id { getset; }
  6.         //学生表的id 
  7.         public int Userid { getset; }
  8.         //分数表的id 
  9.         public int Scroeid { getset; }
  10. //从两张表中随便引入一张表
  11.         public virtual List<UserInfo> userInfo { getset; }
  12.     }
  13.    //需要关联表的部分
  14.    //学生表导航属性中间表
  15.    public virtual List<CenterTable> center { getset; }
  16.    //分数表导航属性中间表
  17.    public virtual List<CenterTable> center { getset;

数据库生成的中间表




使用fluentApi(更灵活,关联表的表名,两个外键可以自己灵活控制)

  1.  //中间表关联上下文对象
  2.   public DbSet<CenterTable> CenterTable { get; set; }
  3.   //重写方法(重写关键字override )
  4.    protected override void OnModelCreating(DbModelBuilder modelBuilder)
  5.         {
  6.             modelBuilder.Entity<UserInfo>().HasMany(a => a.center).WithMany(a => a.userInfo).Map(a =>
  7.             {
  8. //数据库中中间表的表名
  9.                 a.ToTable("UserInfo_Scroe");
  10. //第一张表的ID(根据方法中的表的顺序排)
  11.                 a.MapLeftKey("Userid");
  12. //第二张表的ID
  13.                 a.MapRightKey("Scroeid");
  14.             });
  15.         }

自定义关联

可以将多对多拆分成两个一对多

定义中间表绑定两个外键分别为两张表的ID

  1. //中间表(中间表还可以定义其他字段,最灵活,最通用)
  2.   public class CenterTable
  3.     {
  4.         public int Id { getset; }
  5.         
  6.         public int Userid { getset; }
  7.         public int Fatherid{ getset; }
  8.         [ForeignKey("Userid ")]
  9.         public virtual UserInfo userInfo { getset; }
  10.         
  11.         [ForeignKey("Fatherid")]
  12.         public virtual Parents  parents   { getset; }
  13.     }
  14. //学生表
  15.  public partial class UserInfo
  16.     {
  17.         
  18.         [Key]
  19.         public int Sid { getset; }
  20.        
  21.         [Required, Column("UserName")]
  22.         public string UserName { getset; }
  23.        
  24.         [Required, Column("UserNum")]
  25.         public string UserNum { getset; }
  26.      
  27.     }
  28.     
  29.     //家人表
  30.       public class Parents
  31.     {
  32.         [Key]
  33.         public int Sid { getset; }
  34.         [Required, Column("Father")]
  35.         public string Father { getset; }
  36.         
  37.         [Required, Column("Mather")]
  38.         public string Mather { getset; }
  39.         [Required, Column("Uid")]
  40.         public int Uid { getset; }
  41.     }


评价

NET Core 使用 EF Code first

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

Code first执行命令报错,无法将“Enable-Migrations”项识别为 cmdlet、函数、脚本文件

EF:执行命令报错无法将“Enable-Migrations”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如...

EF Code first常用命令

Enable-Migrations启用数据库迁移Enable-Migrations –EnableAutomaticMigrations 启动自动迁移Add-Migration Name(名字可...

EF Code first 多对多关系配置

Code First配置多对多关系,常规有两种方法例如我们有一张学生表,和一张课程表,学生和课程是一个多对多的关系方法1:单纯...

EF Code first配置1对多关系,配置外键关系

方法一:通过默认名称,导航属性名称+主表主键注意这个是属性不是字段!,要加get,set可能会因为很久没有用,就忘记了,写...

EF Code first操作数据库具体步奏

创建两个类库,分别一个实体类Model,一个帮助类DAL用于操作数据库配置在实体层类添加属性和字段用于创建数据库的表,同时添加...

Code first迁移命令

Enable-Migrations启用数据库迁移Enable-Migrations –EnableAutomaticMigrations 启动自动迁移Update-Database 更新到数据...

EF Code first配置唯一约束

在EntityFramework 6.1后可以直接使用:[Index(&quot;TitleIndex&quot;,IsUnique=true)] publicstringTitle{get;set;}在旧...

Core EF Code first-黑色主题效果

[TOC] 创建好实体Student类: public class Student { public int ID { get; set; } public string LastName ...

.NET CORE EF数据库迁移,以及迁移命令详解。Code first。在不删除表的情况下保持同步

.NET CORE EF 数据库迁移需要的依赖Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 3.1.1 Install-Pa...

Code first 基础

第一步:创建好实体第二步:创建上下文对象第三步;实体对象与上下文进行关联第四步:配置连接字符串第五步SaveChanges写入...

Code first 创建

第一步:创建好实体 如 限制条件如果写出来没有应用可以去在该类库中添加一个ADO.NET实体数据模型 然后建立一个空模型,...

Code first添加外键约束

实体对象进行关联(给学生表定义外键)//学生表实体 publicpartialclassUserInfo { [Key] publicintSid{get;set;} [St...

Code first 配置外键 一对多 多对多

?配置外键 一:导航属性 外键字段在模型中没有,没法自己去控制联和查询只能使用导航属性 //子表 namespaceModel ...

Code first 分组

根据linq表达式//实例化数据 SchoolContextschoolcontext=newSchoolContext(); //linq表达式 varInfo=fromscroeinsc...