EF Core一对一和多对多
目录
EF Core一对一
关系属性
关系配置
使用
EF Core多对多
关系属性
关系配置
使用
EF Core一对一
关系属性
必须显式的在其中一个实体类中声明一个外键属性,可以在Order建立Delivery,也可以在Delivery建立OrderId
class Order
{public long Id { get; set; }public string Name { get; set; }public string Address { get; set; }public Delivery Delivery { get; set; }
}class Delivery
{public long Id { get; set; }public string CompanyName { get; set; }public string Number { get; set; }public Order Order { get; set; }public long OrderId { get; set; }
}
关系配置
class OrderConfig : IEntityTypeConfiguration<Order>{public void Configure(EntityTypeBuilder<Order> builder){builder.ToTable("T_Orders");builder.HasOne(o => o.Delivery).WithOne(p => p.Order).HasForeignKey<Delivery>(p => p.OrderId);}}class DeliveryConfig : IEntityTypeConfiguration<Delivery>
{public void Configure(EntityTypeBuilder<Delivery> builder){builder.ToTable("T_Deliverys");}
}
使用
static async Task Main(string[] args)
{using (MyDbContext ctx = new MyDbContext()){Order o1 = new Order{Name="书",Address="中国"};Delivery d1 = new Delivery{CompanyName="顺丰",Number="SF25646",Order=o1};ctx.Deliverys.Add(d1);await ctx.SaveChangesAsync();}
}
EF Core多对多
EF Core5.0开始,才正式支持多对多
关系属性
class Student
{public int Id { get; set; }public string Name { get; set; }public List<Teacher> Teachers { get; set; } = new List<Teacher>();
}class Teacher
{public int Id { get; set; }public string Name { get; set; }public List<Student> Students { get; set; } = new List<Student>();
}
关系配置
class StudentConfig : IEntityTypeConfiguration<Student>
{public void Configure(EntityTypeBuilder<Student> builder){builder.ToTable("T_Students");builder.HasMany(o => o.Teachers).WithMany(t => t.Students).UsingEntity(j => j.ToTable("T_Student_Teachers"));}
}class TeacherConfig : IEntityTypeConfiguration<Teacher>
{public void Configure(EntityTypeBuilder<Teacher> builder){builder.ToTable("T_teachers");}
}
使用
class Program
{static async Task Main(string[] args){using (MyDbContext ctx = new MyDbContext()){//插入Student s1 = new Student { Name = "张三" };Student s2 = new Student { Name = "李四" };Student s3 = new Student { Name = "王五" };Teacher t1 = new Teacher { Name = "Tom" };Teacher t2 = new Teacher { Name = "Jerry" };Teacher t3 = new Teacher { Name = "Bob" };s1.Teachers.Add(t1);s1.Teachers.Add(t2);s2.Teachers.Add(t2);s2.Teachers.Add(t3);s3.Teachers.Add(t1);s3.Teachers.Add(t2);s3.Teachers.Add(t3);ctx.Students.Add(s1);ctx.Students.Add(s2);ctx.Students.Add(s3);await ctx.SaveChangesAsync();//查询var teachers = ctx.Teachers.Include(t => t.Students);foreach (var t in teachers){Console.WriteLine(t.Name);foreach (var s in t.Students){Console.WriteLine("\t" + s.Name);}}}}
}
相关文章:
EF Core一对一和多对多
目录 EF Core一对一 关系属性 关系配置 使用 EF Core多对多 关系属性 关系配置 使用 EF Core一对一 关系属性 必须显式的在其中一个实体类中声明一个外键属性,可以在Order建立Delivery,也可以在Delivery建立OrderId class Order {public long…...
记一次sealos部署k8s集群之delete了第一台master如何恢复
记一次sealos部署k8s集群之delete了第一台master如何恢复 一、背景描述 使用sealos部署了一套K8S集群 master信息:172.27.100.1、172.27.100.2、172.27.100.3 node信息:172.27.100.4、172.27.100.5 sealos安装在172.27.100.1节点,根目录下/root/.sealos/文件还在! [root…...
vue3+vite+ts集成第三方js
npm run dev可以正常运行和测试。但是npm run build会报错。 要实现引入静态js,避免使用全局变量报错。 1. HTML 引入第三方 JS 在你的 HTML 文件中,通过 <script> 标签引入一个本地第三方 JS 文件,例如: <script sr…...
android framework.jar 在应用中使用
在开发APP中,有时会使用系统提供的framework.jar 来替代 android.jar, 在gradle中配置如下: 放置framework.jar 依赖配置 3 优先级配置 gradle.projectsEvaluated {tasks.withType(JavaCompile) {Set<File> fileSet options.bootstrapClasspat…...
FFmpeg入门
在音视频处理领域,有一款神器级的工具横扫开发者圈,那就是 FFmpeg。它被誉为“音视频处理的瑞士军刀”,凭借强大的功能和开源的特性成为众多开发者和媒体从业者的首选。今天,我们就来聊聊 FFmpeg 的入门使用,带你轻松开…...
云平台一键部署【Video-Background-Removal】视频换背景,无任何限制,随意换
Video-Background-Removal 是一款革命性的视频背景替换工具,旨在让用户轻松实现视频背景的快速更换。无论你是专业创作者还是普通用户,这款软件都能让你在几秒钟内改变背景,完全消除限制,随心所欲,随时随地想换就换&am…...
量子计算:从薛定谔的猫到你的生活
文章背景 说到量子计算,不少人觉得它神秘又遥不可及。其实,它只是量子物理学的一个“应用小分支”。它的核心在于量子比特的“叠加”和“纠缠”,这些听上去像科幻小说的概念,却为计算世界开辟了一片全新的天地。如果经典计算是“…...
51单片机——I2C-EEPROM
I2C:总线标准或通信协议 EEPROM:AT24C02芯片 开发板板载了1个EEPROM模块,可实现IIC通信 1、EEPROM模块电路(AT24C02) 芯片的SCL和SDA管脚是连接在单片机的P2.1和P2.0上 2、I2C介绍 I2C(Interÿ…...
R语言的语法糖
R语言的语法糖 引言 在编程语言中,所谓的“语法糖”是指那些使得程序员能够以更简洁、直观的方式书写代码的语法形式。R语言作为一种用于统计分析和数据可视化的编程语言,具有丰富的功能和灵活的语法。本文将深入探讨R语言中的语法糖,帮助读…...
【算法学习笔记】30:埃氏筛(Sieve of Eratosthenes)和线性筛(Linear Sieve)
测试题目:AcWing 868. 筛质数 埃氏筛(Sieve of Eratosthenes) 如果 i i i是素数,每次把 i i i的倍数都筛掉,存在重复筛选,时间复杂度 n ⋅ l o g ( l o g n ) n \cdot log(logn) n⋅log(logn)。 #includ…...
【AscendC】tiling方案设计不当引起的一个时隐时现的bug
在设计tiling方案时,通常会考虑到非对齐的场景,对输入数据进行补全操作从而使得非对齐场景也能正确的完成计算。但在某些算子的实现过程中,沿用上述操作却会造成数据的错误计算,且这种错误出现与否取决于随机生成的测试数据质量。…...
视频转码对画质有影响吗?视频融合平台EasyCVR支持哪些转码格式?
视频转码过程是将视频文件从一种编码格式转换为另一种格式的过程,这一过程在现代数字媒体中扮演着至关重要的角色。众所周知,视频转码不仅仅是简单的格式转换,它涉及多个关键参数的改变,例如视频编码格式、比特率、分辨率以及帧率…...
工业视觉2-相机选型
工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结,具体如下: 一、按芯片类型 CCD相机:采用电荷耦合器件(CC…...
基于SpringBoot+Vue的健身房管理系统
系统展示 用户前台界面 管理员后台界面 系统背景 随着现代生活节奏的加快,人们对健康的需求日益增强,健身房行业因此迎来了蓬勃的发展。然而,传统的健身房管理方式逐渐暴露出效率低下、会员信息管理混乱、课程安排不灵活等问题。为了解决这些…...
leetcode 面试经典 150 题:快乐数
链接快乐数题序号202题型数组解题方法哈希表难度简单熟练度✅✅✅✅ 题目 编写一个算法来判断一个数 n 是不是快乐数。 [快乐数] 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1࿰…...
Leetcode 279. 完全平方数 动态规划 完全背包问题
原题链接:Leetcode 279. 完全平方数 class Solution { public:int numSquares(int n) {vector<int> dp(n 1, 0);for (int i 1; i < n; i) {int tmp INT_MAX;for (int j 1; j * j < i; j) {tmp min(tmp, dp[i - j * j]);}dp[i] tmp 1;}return dp[…...
python学opencv|读取图像(三十三)阈值处理图像-限定像素
【1】引言 前序我们已经掌握分解图像的通道,设置各个通道的RGB值,相关文章包括且不限于: python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分-CSDN博客 python学opencv|读取图像(十五)B…...
QT Quick QML 实例之椭圆投影,旋转
文章目录 一、前言二、演示三、部分代码与分析 QML 其它文章请点击这里: QT QUICK QML 学习笔记 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 一、前言 此 Demo 主要用于无人机吊舱视角的模拟…...
炸砖块游戏的最终图案
描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个 n * m 的砖块矩阵。小红会炸 k 次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。 输入描述 第一行输入三个正整数 n, m, k,代表矩阵的行…...
LLM的实验平台有哪些:快速搭建测试大语言模型
LLM的实验平台有哪些:快速搭建测试大语言模型 目录 LLM的实验平台有哪些:快速搭建测试大语言模型低代码平台工程观测平台本地应用平台在线编程竞技场性能排名代码质量评估开源框架Hugging Face是一个机器学习和数据科学平台及社区主要功能开源工具与库应用场景优势低代码平台…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...
Java中栈的多种实现类详解
Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...
