杨中科 .NETCORE EFCORE第七部分 一对一,多对多

2024-01-17 19:44

本文主要是介绍杨中科 .NETCORE EFCORE第七部分 一对一,多对多,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一对一

在这里插入图片描述
在这里插入图片描述

一对一关系配置

1、builder.HasOne(o =>o.Delivery).WithOne(d=>d.Order).HasForeignKey(d=>dOrderId);
2、测试插入和获取数据

示例

新建 Order
在这里插入图片描述

新建 Delivery
在这里插入图片描述
DeliveryConfig
在这里插入图片描述
OrderConfig
在这里插入图片描述
执行 迁移命令
在这里插入图片描述
在这里插入图片描述
查看数据库

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

测试数据插入

在这里插入图片描述
在这里插入图片描述
运行查看数据
在这里插入图片描述

在这里插入图片描述

多对多

1、多对多:老师一学生
2、EF Core 5.0开始,才正式支持多对多
3、需要中间表,举例数据

多对多实体

class Student
public long Id { get; set; }
public string Name { get; set;}
public List Teachers { get; set;} = new List();

classTeacher
public long Id { get; set; )
public string Name { get; set;)
public ListStudents { get; set;} = new List();

多对多关系配置

builder.HasMany(s =>s.Teachers).WithMany(t=>t.Students).UsingEntity(j=>j.ToTable(“T_Students_Teachers”));

示例:

新建Student
在这里插入图片描述

添加Teacher
在这里插入图片描述

配置StudentConfig
在这里插入图片描述

配置TeacherConfig

在这里插入图片描述

配置DbContext
在这里插入图片描述
在这里插入图片描述

执行数据库迁移命令

在这里插入图片描述
在这里插入图片描述

生成的数据库 表

Student
在这里插入图片描述

Teacher
在这里插入图片描述

指定的关系表
在这里插入图片描述
在这里插入图片描述

插入数据测试

在这里插入图片描述在这里插入图片描述

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查询一下所有的老师,并且列出他们的学生

在这里插入图片描述
运行结果
在这里插入图片描述

基于关系的复杂查询

关系数据查询

1、查询评论中含有“微软”的所有的文章:ctx.Articles.Where(a=>a.Comments.Any(c=>c.Mesage.Contains(“微软”)));
2、查看生成的SOL语句。

示例:
在这里插入图片描述
运行结果 和 sql
在这里插入图片描述

变换形式

1、变换成另一种写法
ctx.Comments.Where(c => c.Message.Contains(“微”)
.Select(c => c.Article).Distinct();
2、查看生成的SQL语句
3、同样效果的代码可能有多种写法,有时候要关注底层的SQL,看哪种方式最好

示例:

在这里插入图片描述

运行结果和sql
在这里插入图片描述
重复情况,
在这里插入图片描述
在这里插入图片描述
解决方式,加上Distinct()排重
在这里插入图片描述

运行结果:
在这里插入图片描述

例子

1、查询“所有由蜗牛快递负责的订单信息力
ctx.Orders.Where(o=>o.Delivery.CompanyName=="蜗牛快递”)

示例:
在这里插入图片描述

这篇关于杨中科 .NETCORE EFCORE第七部分 一对一,多对多的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617018

相关文章

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

C# Hash算法之MD5、SHA

MD5我们用的还是比较多的,一般用来加密存储密码。但是现在很多人觉MD5可能不太安全了,所以都用上了SHA256等来做加密(虽然我觉得都差不多,MD5还是能玩)。 还是跟上一篇说的一样,当一个算法的复杂度提高的同时肯定会带来效率的降低,所以SHA和MD5比较起来的话,SHA更安全,MD5更高效。 由于HASH算法的不可逆性,所以我认为MD5和SHA主要还是应用在字符串的"加密"上。 由于