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

这篇具有很好参考价值的文章主要介绍了杨中科 .NETCORE EFCORE第七部分 一对一,多对多。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一对一

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

一对一关系配置

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

示例

新建 Order
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

新建 Delivery
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
DeliveryConfig
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
OrderConfig
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
执行 迁移命令
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
查看数据库

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

测试数据插入

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
运行查看数据
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

多对多

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
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

添加Teacher
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

配置StudentConfig
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

配置TeacherConfig

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

配置DbContext
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

执行数据库迁移命令

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

生成的数据库 表

Student
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

Teacher
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

指定的关系表
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

插入数据测试

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

运行结果:
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

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

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
运行结果
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

基于关系的复杂查询

关系数据查询

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

示例:
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
运行结果 和 sql
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

变换形式

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

示例:

杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

运行结果和sql
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
重复情况,
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库
解决方式,加上Distinct()排重
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

运行结果:
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库

例子

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

示例:
杨中科 .NETCORE EFCORE第七部分 一对一,多对多,ASP.NET,.netcore,数据库文章来源地址https://www.toymoban.com/news/detail-799141.html

到了这里,关于杨中科 .NETCORE EFCORE第七部分 一对一,多对多的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • queryWrapper处理一对一,一对多,多对多

    是的,定义一个 BankUser 对象时,通常需要在其内部定义一个 BankCard 字段来表示其与 bank_card 表的关联关系。 例如,在 BankUser 类中定义一个 BankCard 对象作为其属性:```java ``` 然后,在查询 BankUser 对象时,需要使用 LEFT JOIN 将 bank_user 和 bank_card 表进行关联,并使用 select 方法指

    2024年02月04日
    浏览(31)
  • [MySql]实现多表查询-一对一,一对多

    目录 多表关联关系的分类 mybatis中的多表查询: 数据库准备  项目目录  一对一查询(多对一) 方式一:(xml文件映射) 查询结果:  方式二:(注解映射)  一对多查询(一对多) 方式一:(xml文件映射)  方式二:(注解映射) 既然数据库是存储项目中的数据的,项目中的

    2023年04月10日
    浏览(40)
  • TCP一对一聊天

    客户端 服务端  结果展示  第二种 客户端 服务端 结果

    2024年02月04日
    浏览(33)
  • MyBatis关联查询实战:一对一与一对多详细解析

    MyBatis是一款强大的持久层框架,提供了多种方式来处理关联查询,其中包括一对一和一对多的情况。在本文中,我们将深入探讨这两种关联查询的实现方式,并通过具体的示例代码进行详细解释。 实现一对一关联查询的方式有多种,其中包括嵌套查询(Nested Queries)和结果集

    2024年01月19日
    浏览(62)
  • MyBatis案例三:商品的类别(一对一,一对多查询)

    在数据库分别创建一个product、category表: 商品表(product) 商品编号(id) 商品名称(goodsname) 商品单价(price) 商品类别(typeid) 1 电视机 5000 1 2 冰箱 4000 2 3 空调 3000 2 4 洗衣机 2000 2 商品类别表(category) 商品类别编号(id) 商品类别名称(typename) 1 黑色家电 2 白色家电

    2023年04月08日
    浏览(39)
  • STM32 LWIP UDP 一对一 一对多发送

    之前没有接触过网络的通信,工作需要 UDP 接收和发送通信,在网上没有找到一对一、一对多的相关例程;于是在技术总监对我的指导,用正点原子板子给的例程是从官方的程序修改的,实现了Lwip UDP通信一对一、一对多的发送程序,可以随便指定发送 ip地址 、发送 端口号

    2024年02月15日
    浏览(35)
  • OVS Vxlan一对一模式VS一对多模式

    OVS Vxlan模式 OVS 支持 GRE、VXLAN、STT、Geneve和IPsec隧道协议,这些隧道协议就是overlay网络的基础协议,通过对物理网络做的一层封装和扩展,解决了二层网络数量不足的问题,最大限度的减少对底层物理网络拓扑的依赖性,同时也最大限度的增加了对网络的控制。针对VXLAN隧道创

    2024年02月03日
    浏览(43)
  • TCP实现一对一聊天

    一,创建类 二,类 1.ChatSocketServer类 2.ChatSocketClient类 三,结果(先服务  再客户)

    2024年02月03日
    浏览(37)
  • python#django数据库一对一/一对多/多对多

    搭建 # 一对一 class   TestUser(models.Model):     username=models.CharField(max_length=32)     password = models.CharField(max_length=32) class TestInfo(models.Model):     mick_name=models.CharField(max_length=32)     user=models.OneToOneField(to=TestUser,on_delete=models.CASCADE()#on_delete 删除的模式 CASCADE 级联删除 让后执行数

    2024年02月14日
    浏览(62)
  • Mybatis:一对一查询映射处理

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! MyBatis是一种流行的Java持久化框架,它提供了灵活而强大的查询映射功能。在一些复杂的数据模型中

    2024年02月14日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包