Entity Framework 实践系列 —— 搞好关系 - 同事之间(多对多,many-to-many)

自然语言如何重构SEO:从关键词匹配到语义理解的实战转型 搜索引擎优化(SEO)正经历一场由自然语言处理(NLP)驱动的根本性变革。传统基于字符串匹配的关键词优化已无法应对用户日益复杂的意图表达,如‘脚踝老扭伤,跑5公里就疼’这类富含场景、症状与诉求的长尾查询。其底层原理在于BERT等预训练语言模型实现了双向语境建模,使搜索系统能理解词与词之间的语义关系,而非简单统计共现;知识图谱则进一步将SEO竞争单位从网页升维至实体,依赖自然语言描述构建可信关系网络。这一范式迁移带来显著技术价值:提升内容相关性、增强意图覆盖广度、加速知识面板收录,并直接改善转化率与用户停留时 阅读详情

从 单相思(单向一对一) 到 两情相悦(双向一对一) 到 生儿育女(一对多),这是人生的一项使命 —— 成家。

人生还有另一项使命 —— 立业。它不是一个人的事情,也不是两个人的事情,它需要很多志同道合的人并肩作战。与你并肩作战的人叫作同事,同事之间的关系是双向的,你和他是同事,同时他和你也是同事,你有很多同事,你的同事也有很多同事。这就是“多对多”关系。

再回到博客的应用场景,文章(BlogPost)与分类(Category)之间也是“多对多”有关系:

一篇文章(BlogPost)可以属于多个分类,一个分类(Category)可以包含多篇文章。

类图:

BlogPost类的定义:

复制代码
public class BlogPost
{
public int ID { get ; set ; }
public string Title { get ; set ; }
public int BlogID { get ; set ; }
public virtual BlogSite BlogSite { get ; set ; }
public virtual ICollection < Category > Categories { get ; set ; }
}
复制代码

Category类的定义:

public class Category
{
public int ID { get ; set ; }
public string Title { get ; set ; }
public virtual ICollection < BlogPost > BlogPosts { get ; set ; }
}

数据库表结构及关系:

BlogPost_Category是外键表,用于存储BlogPost与Category的多对多关系。

那我们如何在Entity Framework中定义这种关系呢?请看代码:

复制代码
modelBuilder.Entity < BlogPost > ()
.HasMany(b
=> b.Categories)
.WithMany(c
=> c.BlogPosts)
.Map
(
m
=>
{
m.MapLeftKey(
" BlogPostID " );
m.MapRightKey(
" CategoryID " );
m.ToTable(
" BlogPost_Category " );
}
);
复制代码

HasMany表示一篇文章关联多个分类,WithMany表示这些分类也分别关联着多篇文章。你有很多同事,你的同事也有很多同事。

ToTable("BlogPost_Category")表示在BlogPost_Category表中找关系。

MapLeftKey("BlogPostID")与MapRightKey("CategoryID")表示BlogPost要通过BlogPostID找到与自己有关系的人的CategoryID,然后再通过这个CategoryID找到这个人。Category与之相反。

应用场景测试

场景一:获取一篇文章,并同时得到它所属的分类

LINQ查询:

public BlogPost GetBlogPost( int blogPostId)
{
return _blogPostRepository.Entities
.Include(p
=> p.Categories)
.FirstOrDefault(p
=> p.ID == blogPostId);
}

测试代码:

复制代码
[TestMethod]
public void GetBlogPost_Test()
{
var p
= _aggBlogSiteService.GetBlogPost( 1 );
Assert.IsNotNull(p);
Console.WriteLine(
" BlogPost: " + p.Title);
Console.WriteLine(
" Categories: " );
p.Categories.ToList().ForEach
(
c
=> Console.WriteLine( " Category: " + c.Title)
);
}
复制代码

测试结果:

实际执行的SQL:

场景二:获取一个分类,并得到它所包含的文章

LINQ查询:

public Category GetCategory( int categoryId)
{
return _categoryRepository.Entities
.Include(c
=> c.BlogPosts)
.FirstOrDefault(c
=> c.ID == categoryId);
}

测试代码:

复制代码
[TestMethod]
public void GetCategory_Test()
{
var category
= _aggBlogSiteService.GetCategory( 1 );
Assert.IsNotNull(category);
Console.WriteLine(
" Category: " + category.Title);
Console.WriteLine(
" BlogPosts: " );
category.BlogPosts.ToList().ForEach
(
p
=> Console.WriteLine( " BlogPost: " + p.Title)
);
}
复制代码

测试结果:

实际执行的SQL:

测试通过!

多对多关系看起来复杂,但只要处理好了,一点也不复杂。

就像同事关系,虽然人越来越多,但只要目标一致,齐心协力,相处起来就很简单。

【NTN 卫星通信】使用地面网络和卫星网络接入的终端应用场景 卫星接入有广覆盖的特点, 可以改善地面接入网覆盖或无线条件差的地区(例如多径干扰)的服务可用性。对于高速移动中需要实时业务的终端,如IMS语音/视频会议,可以通过地面接入和卫星接入同时实现与5G系统的双连接,在地面接入网不可用的情况下获得连续可靠的业务。 阅读详情

相关推荐

Frida提取Cocos游戏XXTEA密钥的实战方法论

XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识

weixin_33509600的博客 418

AI异构计算工程师笔试攻略:CUDA、算子融合与深度学习框架底层

在人工智能基础设施快速演进的今天,深度学习模型的训练与推理早已不再局限于简单的Python调用,而是深度依赖GPU、FPGA等异构计算资源的底层优化能力。理解硬件体系结构、并行编程模型与深度学习框架的实现原理,成为高性能计算领域工程师的核心素养。从CUDA编程中的线程束调度、共享内存与访存合并,到算子融合如何减少全局内存读写、提升计算效率,再到多卡并行训练中的通信与显存管理,这些技术共同构成了现代AI系统的性能基石。无论是面向大型互联网公司的校招笔试,还是日常推理引擎与训练框架的研发实践,掌握这些知识都能帮

weixin_34163553的博客 279

基于 SquashFS 构建 Linux 可读写文件系统

嵌入式 Linux 启动过程 本文所描述的的 Linux Image 由 BootLoader、kernel、initrd、rootfs 组成,它们共同存在于一个可以启动的存储设备中(本文以 USB 为例)。组成架构如下: 图 1. 可启动 linux 镜像文件结构 各个模块的作用如下: Boot Loader:由 BIOS 加载,用于将后续的 Kernel 和 initrd 的装载到内存中 kernel:为 initrd 运行提供基础的运行环境 initrd:检测并加载各种驱动程序 ro

wzq2009的专栏 1174

Entity Framework 实体关系总结

1. 一对一关系(one-to-one)   a) 单向一对一(文章链接)   类图:   数据库表结构:   Entity Framework中实体关系的定义: modelBuilder.Entity() .HasRequired(b => b.BlogUser) .WithMany() .HasForeignKey(b => b.

jiangfeng_1204的专栏 635

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

Oracle登录报错ORA-12560?5分钟搞定TNS协议适配器错误的完整修复指南

本文详细解析了Oracle登录报错ORA-12560(TNS协议适配器错误)的成因与解决方案。从基础服务检查到高级网络配置排查,提供了一套完整的修复流程,帮助数据库管理员快速解决连接问题,确保Oracle数据库的稳定运行。

weixin_29278805的博客 522

Entity Framework的简单使用之多对多关系

在现实生活中,对象之间多对多的关系也比较常见。比如一篇博客对应多个目录,一个目录也可以对应多个博客。 下面我们就以博客和目录之间多对多关系进行讨论。 首先我们添加实体、映射以及对应的服务。 public class Blog : BaseEntity { public string BlogName { get; set; } pub...

weixin_30314631的博客 151

KEPServerEX与三菱iQ-R系列PLC通讯

KEPServerEX与三菱iQ-R系列PLC通讯Mitsubishi Ethernet北京东方鼎晨科技有限公司目 录1. 前言2. 三菱PLC端相关设置3. Kepware端相关设置KEPServerEX是美国PTC Kepware公司生产的具有行业性的连接平台,KEPServerEX支持150多种通讯协议,用于向您的所有应用程序提供单一来源的工业自动化数据。该平台的设计使用户能够通过一个直观的用户界面来连接、管理、监视和控制不同的自动化设备和软件应用程序。KEPServerEX利用OPC(自动化产业的互

qq_28768521的博客 8097

Entity Framework 实体关系总结:one-to-one, one-to-many, many-to-many

Entity Framework 实体关系总结:one-to-one, one-to-many, many-to-many 通过Entiy Framework实践系列文章,理了理 Entity Framework 的实体关系。 为什么要写文章来理清这些关系?“血”的教训啊,刚开始使用 Entity Framework的时候,由于没有静下心来认真理清关系,走了一些"痛不欲生"的弯路。而我们目前开发的项目都在使用 Entity Framework,为了避免其他人再经历"痛不欲生"的弯路。于是下定决心边...

RainyLin-SunnyLin的专栏 880

Vue3 - 实现用户上传本地视频文件到服务器+上传进度条+暂停续传+中断取消上传等,视频上传后可在线播放预览已上传的视频,视频文件上传视频回显示例代码(支持Element、Antd等upload组件

实现视频上传和视频预览,vue3实现视频上传功能,上传视频回显,视频流上传播放功能,vue与axios上传视频并显示上传进度,upload组件实现视频文件上传视频回显,upload组件实现视频上传及进度条展示,视频上传及实时进度条显示,视频上传过程中如何中断上传,VUE3+element 上传视频,大文件分片上传+断点续传,axios大文件切片上传,Vue3上传视频后如何播放预览,上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频,详细实现选择视频并上传到服务

🏆 前端领域优质创作者 3114

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 523

Solving the Detached Many-to-Many Problem with the Entity Framework

Introduction This article is part of the ongoing series I’ve been writing recently, but can be read as a standalone article. I’m going to do a better job of integrating the changes documented h...

apple443322的博客 363

11-16 Fluent结果查看及后处理功能(做动画、监控点)

监控点、面及动画操作

zheaa的博客 1万+

Entity Framework多对多关系实践(many-to-many)

Entity Framework中有三种关系,一对一(one-to-one),一对多(one-to-many),多对多(many-to-many),前两种就不说了,园子里这方面的文章很多(dudu的:Entity Framework 实践系列,杨延成的:EF框架step by step,郝冠军的:Entity Framework系列文章),看过之后简单的使用基本没什么问题,这里要说的是第三

yanfeng918的专栏 1025

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Many to Many relation with Entity Framework

In this article I mainly concentrated on Many-To-Many Relationship to perform CRUD operations using EF & Linq. I have taken three tablesCustomer, Product, and CustomerProduct. I am performing Insert,

liguoxiong的专栏 743

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Entity Framework one to many 一对多

one to many 一对多关系实体对应数据库中表来体现一对多关系,可以通过两种方式进行实现,约定+注释和fluent api的方式,本次实现使用的是fluent api,示例:一个项目类(Project)对应多次汇款(payback),其中Project的主键为payback的外键,代码如下:Project:public partial class Project { ...

gishys的专栏 1256

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Entity Framework Many to Many Relation Mapping(Entity Framework多对多关系映射)

通常我们在做数据库设计时都会有两张表是多对多关系的时候,在数据库做多对多关系时候我们通常通过中间关联表来处理,那我们现在在EF中是如何处理的呢? 假设我们有如下关系,用户(User)包含多个角色(Role),角色包含多个用户的情况下,我们如何用EF来处理这样的数据库设计呢? 接下来看如下代码清单: 首先看我们的User、Role实体 1 public class Us...

weixin_34055787的博客 97

Entity Framework:EDM中多对多关系(Many-to-Many Acssociation)以及有效负载(Payloads)问题

在EDM中的关系Assciation 如果是One:OneorOne:many 按照设计器的Wizard一步步下来,然后做TableMapping就可以了(虽然在EDM之前也接触过Nhibernate,但仅仅局限于对它的查询.mapping的概念的不是很强烈)那么对于many:many的Associationn呢,以Order <- (*-*) -> Product这样...

weixin_30546933的博客 99

Entity framework and many to many queries unusable?

2 3 I'm trying EF out and I do a lot of filtering based on many to many relationships. For instance I have persons, locations and a personlocation table to ...

weixin_30436101的博客 81

Entity Framework 实践系列 —— 搞好关系 - 生儿育女(一对多,one-to-many)

从单相思(单向一对一),到两情相悦(双向一对一)并步入婚姻殿堂,接下来就是生儿育女,男人升级为父亲,如果生了很多孩子,那父亲与孩子之间的关系就是“一对多”。 一个父亲有多个孩子,一个孩子只属于一个父亲。 我们还是以博客为例,场景如下: 一个博客(BlogSite)有多篇文章(BlogPost),一篇文章只属于一个博客。 看类图: 看表结构: BlogSite与BlogPost的

writtyflame的部落格 633

Many To Many Mappings in Entity Framework

NET 3.5 SP1中的Entity Framework着重于“数据库优先(Database First)”,即从数据库中逆工程生成实体数据模型。而Visual Studio 2010/.NET 4.0中的Entity Framework 4.0引进了“模 型优先(Model First)”,即允许你先生成实体数据模型,然后生成映射到该模型的数据库。而Entity Framework Featu...

weixin_30888413的博客 66

Configure many-to-many

ef relationship

RainyLin-SunnyLin的专栏 648
上一篇: Entity Framework 实践系列 —— 搞好关系 - 生儿育女(一对多,one-to-many)
下一篇: asp.net中的各种数据绑定使用
writtyflame
博客等级 码龄17年 6粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值