1.Model配置

Entity Framework Core 提供了两种方式

A.使用 fluent API 配置模型

可在派生上下文中覆写 OnModelCreating 方法,并使用 ModelBuilder API 来配置模型。 此配置方法最为有效,并可在不修改实体类的情况下指定配置。 Fluent API 配置具有最高优先级,并将替代约定和数据注释。

    class MyContext : DbContext{public DbSet<Blog> Blogs { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Blog>().Property(b => b.Url).IsRequired();}}

B.使用数据注释来配置模型

也可将特性(称为数据注释)应用于类和属性。 数据注释会替代约定,但会被 Fluent API 配置替代。

    public class Blog{public int BlogId { get; set; }[Required]public string Url { get; set; }}

一对多

以city和Province为例,Province有多个city,而一个city只能有一个Province

using System;
using Microsoft.EntityFrameworkCore;namespace ASPNetEFFCore.Models
{public class MyContext:DbContext{public MyContext(DbContextOptions<MyContext> options):base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){//配置多对多 ,就是两个一对多,可以不写modelBuilder.Entity<City>().HasOne(city => city.Province).WithMany(x => x.Cities).HasForeignKey(city => .ProviceId);}public DbSet<Province> Provinces { get; set; }public DbSet<City> Cities { get; set; }}public class Province{public Province(){Cities = new List<City>();}public int Id { get; set; }public string Name { get; set; }public int Population { get; set; }public List<City> Cities { get; set; }}public class City{public int Id { get; set; }public string Name { get; set; }public string AreaCode { get; set; }public int ProviceId { get; set; }public Province Province { get; set; }public Mayor Mayor {get;set;}}
}

多对多

以city和company为例,一个city会有多个company,一个company在多个city都有多个分company

using System;
using Microsoft.EntityFrameworkCore;namespace ASPNetEFFCore.Models
{public class MyContext:DbContext{public MyContext(DbContextOptions<MyContext> options):base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){//使用x.CityId,x.CompanyId生成 cityCompany的联合主键//执行数据库迁移modelBuilder.Entity<CityCompany>().HasKey(x => new{x.CityId,x.CompanyId});//配置多对多 ,就是两个一对多,可以不写modelBuilder.Entity<CityCompany>().HasOne(x => x.City).WithMany(x=> x.CityCompany).HasForeignKey(x=>x.CityId);modelBuilder.Entity<CityCompany>().HasOne(x => x.Company).WithMany(x=> x.CityCompany).HasForeignKey(x=>x.CompanyId);}public DbSet<City> Cities { get; set; }public DbSet<CityCompany> cityCompanies {get;set;}}public class City{public City(){CityCompany = new List<CityCompany>();}public int Id { get; set; }public string Name { get; set; }public string AreaCode { get; set; }public int ProvinceId { get; set; }public Province Province { get; set; }//多对多映射public List<CityCompany> CityCompany {get;set;}}public class Company{public Company(){CityCompany = new List<CityCompany>();}public int Id {get;set;}public string Name {get;set;}public DateTime EstablishDate {get;set;}public string LegalPerson {get;set;}//多对多映射public List<CityCompany> CityCompany {get;set;}}//多对多中间modelpublic class CityCompany{public int CityId {get;set;}public City City{get;set;}public int CompanyId {get;set;} public Company Company {get;set;}}
}

最后执行迁移命令

EF Core一对多和多对多相关推荐

  1. EF CORE 一对多、多对多添加、修改

    创建.net core 控制台应用程序: 项目文件结构: 添加如下NuGet包: Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore ...

  2. ef core中如何实现多对多的表映射关系

    文档:https://docs.microsoft.com/en-us/ef/core/modeling/relationships class MyContext : DbContext{publi ...

  3. EF Core的学习之路01

    本文章是我听B站杨中科的所做的笔记 杨中科B站视频链接:.NET 6教程,.Net Core 2022视频教程,杨中科主讲_哔哩哔哩_bilibili 什么时ORM 1.说明:本课程需要你有数据库.S ...

  4. EF里一对一、一对多、多对多关系的配置和级联删除

    EF里一对一.一对多.多对多关系的配置和级联删除 本章节开始了解EF的各种关系.如果你对EF里实体间的各种关系还不是很熟悉,可以看看我的思路,能帮你更快的理解. I.实体间一对一的关系 添加一个Per ...

  5. .net core Entity Framework 与 EF Core

    重点讲 Entity Framework Core ! (一)Entity Framework 它是适用于.NET 的对象关系映射程序 (ORM),现在的EF6已经是久经沙场,并经历重重磨难,获得一致 ...

  6. [翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  7. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

    系统必备 .NET Core 2.0.0 SDK 或更高版本. 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本. 创建Web应用程序 ...

  8. efcore 实体配置_C# 数据操作系列 - 7. EF Core 导航属性配置

    在上一篇,大概介绍了Entity Framework Core关于关系映射的逻辑.在上一篇中留下了EF的外键映射没有说,也就是一对一,一对多,多对一,多对多的关系等.这一篇将为大家细细分析一下,如何设 ...

  9. SqlServer一多一、一对多、多对多关系的设置

    最近使用EF Core,使用的是DB First的模式.通过对数据表进行主外键的设置,实现实体类之间一对一.一对多.多对多的等关系模型.以下是Main.Main_Ext.Children三个表, Ma ...

最新文章

  1. Mybatis联合查询
  2. java读取mysql配置文件_一文读懂 MySQL 主从复制读写分离
  3. Linux中常见的环境变量笔记
  4. hexo github搭建博客常用的命令
  5. eclipse怎么显示代码行数
  6. 深入V8引擎-Time核心方法之mac篇
  7. 【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限...
  8. Unity3D资源加密解决方案
  9. Ubuntu安装Adobe Reader
  10. KEIL4文件无法正常使用
  11. Spiral Matrix(Medium)
  12. 温度计数值转换C语言,f和c温度换算(体温计f怎样转换c)
  13. 用计算机刻录光盘,刻录光盘,教您如何使用计算机将文件刻录到光盘上.
  14. 混合个人训练第四十六场(A,B题解) A 数论线代全家桶 (all) B: 看星星 (stars)
  15. 【读书笔记】《牧羊少年奇幻之旅》
  16. (环境搭建+复现)74CMS模版注入+文件包含getshell
  17. webpack中处理css文件
  18. c#程序员面试题汇总,方便自己记录
  19. PC_十进制转二进制速算+常用的2进制和10进制数/转换关系
  20. [SDK]Unity接入Sign in with Apple

热门文章

  1. 2011年9月 月计划
  2. JAVA语言中冒号的用法。
  3. antisamy XML 简介
  4. 分享一个Vue前端代码质量检查方案
  5. 在视频海洋里徜徉的年轻人,618都是怎么选手机的?
  6. 多元线性回归(Linear regression with multiple variables)
  7. 绘声叙风电课堂 锐意做追风少年
  8. 擎创工程师实战| ClickHouse存储结构及索引详解
  9. 分库分表数据库中间件对比
  10. GitHub标星65k,阿里面试核心技术手册,我不允许还有人没看过!