首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >EF code-first是否需要导航属性来删除多对多关系?

EF code-first是否需要导航属性来删除多对多关系?
EN

Stack Overflow用户
提问于 2011-04-07 21:37:00
回答 1查看 1.2K关注 0票数 0

我有两个POCOs参与一个多对多的关系。"A“有一个"B”的集合,但"B“没有必要有"A”的集合。当我删除"B“时,连接表中的记录不会被删除。Entity Framework code-first似乎只在存在导航属性时删除联接记录。这是正确的,还是有其他方法?

示例:

代码语言:javascript
运行
AI代码解释
复制
public class User() { 
   public int Id { get; set; }
   public string Name { get; set; }
   public List<Role> Roles { get; set; }
}

public class Role() { 
   public int Id { get; set; }
   public string Name { get; set; }
}

//... Mapping Config ...//
this.HasMany(x => x.Roles)
   .WithMany(/*can't be expressed without navigation property*/)
   .Map(m => {
      m.MapLeftKey("Users_Id");
      m.MapRightKey("Roles_Id");
      m.ToTable("UserRoleLinks");
   });

//... Deleting a Role that is in use ...//
using(var ctx = new MyDbContext()) {
    var role = ctx.Roles.Find(1);
    ctx.Roles.Remove(role);
    ctx.SaveChanges();
}

在此场景中,当删除角色时,UserRoleLinks记录将成为孤立记录。也许有不同的方式来配置它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-07 22:22:34

这应该不会有任何问题。默认ManyToManyCascadeDeleteConvention将强制EF使用级联删除来创建具有关系的连接表。Role实体中缺少导航属性对此没有影响。

所以你的问题可能的原因是:

  • 您删除了提到的约定
  • 您缺少连接表中关系的级联删除-例如,将Fluent API与现有数据库一起使用时可能会发生这种情况。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5587974

复制
相关文章
EF Core如何处理多对多关系
EF Core在处理多对多关系时并不像一对一和一对多关系那样好处理,下面我们利用一个简单的电子商城购物车来讲解一下吧。
喵叔
2021/11/24
2.1K0
如何处理EF Core的多对多关系?
多对多关系不像其他关系那么简单,在这篇文章中,我将向您展示如何创建多对多关系以及如何在 EF Core 中使用它们。
沙漠尽头的狼
2021/12/01
3.1K0
EF 一对一、一对多、多对多配置语句小记
数据库实体间的关系无非有这么几种:一对一、一对多、多对多,这些关系在EF框架中分别有不同的创建方式: 1、在"Database First"模式中,这些关系通过SQL语句的方式建立 2、在"Model First"模式中,这些关系很简单,通过设计器就能简单搞定,实体简单的关联和数据库表之间的关联,都由EF框架帮我们生成 3、在"Code First"模式中,这些关系则是通过OnModelCreating()来实现,也就是通过代码的方式来实现 本文主要分析"CodeFirst"中上面这些关系的建立.上述的对应
郑小超.
2018/01/26
2K0
EF Core中的多对多映射如何实现?
EF 6.X中的多对多映射是直接使用HasMany-HasMany来做的。但是到了EF Core中,不再直接支持这种方式了,可以是可以使用,但是不推荐,具体使用可以参考《你必须掌握的EntityFramework 6.X与Core 2.0》一文。在这里我就详细的说下如何在EF core下实现。 首先就是实体类的建立:
Ryan_OVO
2023/10/19
4110
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
别先生
2018/01/02
4.8K0
Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
[信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取
实体关系,实体属性抽取是信息抽取的关键任务;实体关系抽取是指从一段文本中抽取关系三元组,实体属性抽取是指从一段文本中抽取属性三元组;信息抽取一般分以下几种情况一对一,一对多,多对一,多对多的情况:
汀丶人工智能
2022/12/21
1.3K0
[信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取
实体关系,实体属性抽取是信息抽取的关键任务;实体关系抽取是指从一段文本中抽取关系三元组,实体属性抽取是指从一段文本中抽取属性三元组;信息抽取一般分以下几种情况一对一,一对多,多对一,多对多的情况:
汀丶人工智能
2022/12/03
1.8K0
EF基础知识小记五(一对多、多对多处理)
本文主要讲EF一对多关系和多对多关系的建立 一、模型设计器 1、一对多关系 右键设计器新增关联 导航属性和外键属性可修改 2、多对多关系 右键设计器新增关联 模型设计完毕之后,根据右键设计器根据模型生
郑小超.
2018/01/26
2.5K0
EF Core 3.1 入门视频-04 多对多,一对一
http://mpvideo.qpic.cn/0b78wmaaaaaajaajzbtom5pvbm6daczqaaaa.f10002.mp4?dis_k=dd3ee0251919e72ac370ba3
宿春磊Charles
2022/03/29
3980
Hibernate 中 一对多、多对一、 关联关系的 配置
多对一:(街道→区县) * TBLJd.java 类* public class TblJd implements java.io.Serializable { // Fields private Integer jdid; private TblQx tblQx; private String jd; private Set tblFwxxes = new HashSet(); ...... } TblJd.hbm.xml: <cla
qubianzhong
2018/08/10
3.2K0
详解Mybatis一对多、多对一、多对多
是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。简单说来就是关系型数据库用了选择、投影、连接、并、交、差、除、增删查改等数学方法来实现对数据的存储和查询。可以用SQL语句方便的在一个表及其多个表之间做非常复杂的数据查询。安全性高。
utopia
2023/03/21
1.6K0
多表间的关系-一对多-多对多-一对一-外键约束
现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。那么我们在设计表的时候,就应该体现出表与表之间的这种关系!表和表之间的关系分成三种:
Devops海洋的渔夫
2022/01/17
6.3K0
多表间的关系-一对多-多对多-一对一-外键约束
数据库在一对一、一对多、多对多怎么设计表关系
那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?
Java学习123
2021/12/28
5.1K0
SQLAlchemy学习-9.一对多和多对一关系
前言 一对多和多对一关系 一对多关系 一对多关系表设计,一个Parent类关联多个Child类 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import relationship # 拼接配置dialect + driver://username:pa
上海-悠悠
2022/08/26
3.4K0
SQLAlchemy学习-9.一对多和多对一关系
Hibernate映射多对多关联关系
在Hibernate中,多对多关联关系(Many-to-Many relationships)是指两个实体类之间的一种关系,其中一个实体类可以与多个另一个实体类相关联,而同样一个实体类也可以与多个另一个实体类相关联。例如,在一个公司中,一个员工可能会在不同的项目中工作,而同样一个项目也可能需要多个员工协同完成。在ORM框架中,多对多关系的映射可以使用中间表、双向一对多关系和关联实体类等多种方式实现。
堕落飞鸟
2023/05/16
1.4K0
hibernate 一对一,一对多,多对多关联关系使用
一对一 如果我们只是单纯的在两个实体类中分别加上@OneToOne注解,会发现两张表都分别引入了对方的主键作为外键。明显的数据冗余,毕竟关系不用双方存储。 利用mappedBy属性,指明关系由哪一方维护。
用户5166330
2019/04/16
5.3K0
hibernate 一对一,一对多,多对多关联关系使用
数据库表关系之-多对多关系
本章内容针对tortoise-orm进行多对多关系的数据分析 图片 ---- 图片 简单的多对多关系介绍 如上ER图中看到了我们的三张表:分别是access、role、user(user这张表我没放上去). 多对多关系: role角色表的一条记录能够对应另外一张user用户表中的多条记录,同时user表中的一条记录也能对应role表中的多条记录,被称之为我们的多对多关系。 在tortoise-orm的ManyToManyRelation关系中,默认是使用pk字段作为关联字段的 class M
Yuou
2022/09/26
3.2K0
数据库表关系之-多对多关系
[译] 如何用 Room 处理一对一,一对多,多对多关系?
将数据拆分为相关联的表,并以有意义的方式将数据组合在一起 是设计关系型数据库的重要部分。从 Room 2.2 (现已稳定)开始,通过 @Relation注解,我们支持了表之间所有可能的关系:一对一,一对多,多对多 。
路遥TM
2021/08/31
3.7K0
Laravel多对多关系详解【文章 - 标签】
今天弄了一天的关于文章的功能,其中主要卡在文章与标签的多对多的关系纠结中。卡了半天,终于算是解决了,不是很完美,但可以。
无道
2019/11/13
1.9K0
Laravel多对多关系详解【文章 - 标签】
MongoDB 多对多关系的简单示例
例如文章的标签,一篇文章可能包含多个标签,一个标签也会对应多篇文章 这是一个多对多的映射关系,在sql中我们一般这样设计 Article: Id Title ... Tag: Id Name Relation: ArticleId TagId 通过表的连接,就可以查询出我们想要的各种数据 那么,如果用MongoDB的思想,该如何设计这种关系呢? 有一个关键点首先要知道:MongoDB中不支持文档的连接操作,所以就不能按照sql的思路来设计 设计示例 下
dys
2018/04/02
3.4K0

相似问题

EF Code-First:多对多单向导航

11

EF具有导航属性的多对多关系

10

EF4多对多导航属性为空

10

EF 4 CTP 5保存多对多导航属性

10

查询多对多ef核心关系

113
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文