Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架-实体类型之间的关联已被切断

实体框架-实体类型之间的关联已被切断
EN

Stack Overflow用户
提问于 2020-09-02 05:08:59
回答 1查看 4.2K关注 0票数 4

嗨,当我试图删除“绑定”表中的一行时,我遇到了实体框架的问题。

这些桌子看起来如下:

代码语言:javascript
运行
AI代码解释
复制
[Table("Users")]
public class UserEntity : BaseEntity
{
    [Required]
    [MaxLength(30)]
    public string Username { get; set; }
    [Required]
    [MaxLength(200)]
    public string Password { get; set; }

    [Required]
    [MaxLength(200)]
    public string Name { get; set; }

    [Required]
    [MaxLength(20)]
    public string Cellphone { get; set; }

    public virtual ICollection<UserGroupEntity> UserGroups { get; set; }


[Table("Groups")]
public class GroupEntity : BaseEntity
{
    [Required]
    [MaxLength(20)]
    public string Code { get; set; }

    [Required]
    [MaxLength(200)]
    public string Name { get; set; }
}

现在我有一张把这两件事联系在一起的桌子:

代码语言:javascript
运行
AI代码解释
复制
[Table("UserGroups")]
public class UserGroupEntity : BaseEntity
{
    [Required]
    [ForeignKey("User")]
    public int UserId { get; set; }

    [Required]
    [ForeignKey("Group")]
    public int GroupId { get; set; }

    public virtual UserEntity User { get; set; }
    public virtual GroupEntity Group { get; set; }


}

但是,当我从数据库中获取一个UserEntity (例如,获取第一个UserGroup并尝试删除它,如下所示)时,我会得到一个错误

代码语言:javascript
运行
AI代码解释
复制
            UserEntity user = _dataContext.Users
            .Include(x => x.UserGroups)
            .ThenInclude(x => x.Group)
            .SingleOrDefault(x => x.Id == model.Id && !x.IsDeleted);


            UserGroupEntity userGroupBinding = user.UserGroups.First();
            user.UserGroups.Remove(userGroupBinding);

            _dataContext.SaveChanges();

我得到的错误消息:

代码语言:javascript
运行
AI代码解释
复制
The association between entity types 'UserEntity' and 'UserGroupEntity' has been severed but the relationship is either marked as 'Required' or is implicitly required because the foreign key is not nullable. If the dependent/child entity should be deleted when a required relationship is severed, then setup the relationship to use cascade deletes.  Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the key values.'

我的DbContext OnModelCreating方法如下所示:

代码语言:javascript
运行
AI代码解释
复制
        protected override void OnModelCreating(ModelBuilder modelBuilder)
    {            
        var cascadeFKs = modelBuilder.Model.GetEntityTypes()
            .SelectMany(t => t.GetForeignKeys())
            .Where(fk => !fk.IsOwnership && fk.DeleteBehavior == DeleteBehavior.Cascade);

        foreach (var fk in cascadeFKs)
            fk.DeleteBehavior = DeleteBehavior.Restrict;



        base.OnModelCreating(modelBuilder);
    }

有没有人知道如何解决这个问题?我一直在寻找我的案子,但从未找到解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 09:06:59

这是一种令人惊讶和违反直觉的行为,是级联删除行为的副作用(尽管删除相关实体与级联删除没有任何共同之处,但根据定义,级联删除应该控制在删除主体实体时发生的事情)。它甚至记录在EF核心文档的移除关系部分:

可以通过将引用导航设置为null或从集合导航中删除相关实体来删除关系。 根据关系中配置的级联删除行为,删除关系可能会对依赖实体产生副作用。

等。

通常,从主体的集合导航属性中删除依赖实体应被视为不关联(可选关系)或删除(所需关系),但显然当前的EF Core实现也会抛出与级联删除关闭(和其他一些场景)之间的所需关系的异常。

在不激活级联删除(您的OnModelCreating正在关闭的)的情况下修复该问题的唯一方法是直接从相应的DbSetDbContext中删除(删除)相关实体,而不是从集合导航属性中删除(删除)。例如替换

代码语言:javascript
运行
AI代码解释
复制
user.UserGroups.Remove(userGroupBinding);

任一种

代码语言:javascript
运行
AI代码解释
复制
_dataContext.UserGroups.Remove(userGroupBinding);

代码语言:javascript
运行
AI代码解释
复制
_dataContext.Set<UserGroup>().Remove(userGroupBinding);

或者只是

代码语言:javascript
运行
AI代码解释
复制
_dataContext.Remove(userGroupBinding);

在这两种情况下,调用SaveChanges之后,依赖实体将被删除在数据库中,并通过EF导航属性修复从集合导航属性中删除。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63706223

复制
相关文章
【干货】郭朝晖:工业大数据的特征、方法与价值创造
本文长度为11700字,建议阅读25分钟 本讲座选自宝钢中央研究院首席研究员郭朝晖于2015年12月30日在清华大数据“技术·前沿”讲座上所做的题为《工业大数据的特征、方法与价值创造》的演讲。 嘉宾介绍: 郭朝晖,现为宝钢中央研究院首席研究员、教授级高工。分别于1990、1994、1997年在浙江大学应用数学、化学工程和自动化专业获得学士、硕士和博士学位。1997年加盟宝钢,2005年晋升教授级高工。长期从事信息、模型、自动控制、大数据等领域的技术研发工作。 曾先后担任中国工业与应用数学学会副理事长,中
数据派THU
2018/01/29
1.2K0
ChatGPT 基于倾向性识别的续写模型
ChatGPT是由OpenAI发布的一款基于对话的GPT模型,于去年11月30日发布,并在发布半个月后进行了一次迭代升级。这款模型因其出色的语言表达能力和广泛的应用领域而引起了巨大的关注。
叶锦鲤
2023/03/21
8900
ChatGPT 基于倾向性识别的续写模型
一文读懂因果推测、倾向模型(结合实例)
原文题目:Propensity Modeling, Causal Inference, and Discovering Drivers of Growth 作者:Edwin Chen 翻译:张逸 校对:卢苗苗 本文共5400字,建议阅读9分钟。 本文通过举例为你介绍因果推测方法、倾向建模及增长的驱动因素。 在正文之前,先想象这样一个场景。 你刚开始一份新工作,而且最近看了《僵尸世界大战》这部电影,正处于一种怀疑人生的状态。再加上前不久你的两个初创公司因为缺乏数据开不下去了,所以你看什么都不太顺眼。 你最先
数据派THU
2018/06/07
1.1K0
特征工程:基于梯度提升的模型的特征编码效果测试
为梯度提升学习选择默认的特征编码策略需要考虑的两个重要因素是训练时间和与特征表示相关的预测性能。Automunge库是处理表格数据常用的库,它可以填充空值,也可以进行分类的编码和归一化等操作,默认的境况下Automunge对分类特征进行二值化处理,并对数值特征进行z-score归一化。本文将通过对一系列不同数据集进行基准测试来验证这些默认值是否是最优化的选项。
deephub
2022/04/14
4540
特征工程:基于梯度提升的模型的特征编码效果测试
特征工程:基于梯度提升的模型的特征编码效果测试
来源:DeepHub IMBA本文4300字,建议阅读8分钟展示梯度提升模型下表格数据中的数字和分类特征的各种编码策略之间的基准测试研究的结果。 为梯度提升学习选择默认的特征编码策略需要考虑的两个重要因素是训练时间和与特征表示相关的预测性能。Automunge库是处理表格数据常用的库,它可以填充空值,也可以进行分类的编码和归一化等操作,默认的境况下Automunge对分类特征进行二值化处理,并对数值特征进行z-score归一化。本文将通过对一系列不同数据集进行基准测试来验证这些默认值是否是最优化的选项。
数据派THU
2022/04/06
4770
特征工程:基于梯度提升的模型的特征编码效果测试
DNN深度学习模型 机器学习模型 特征筛选 各个特征重要度排序
在机器学习或者深度学习模型训练完成后,通常我们需要对输入特征进行重要度排序及筛选,好去找到一些重要度没这么高的特征,将其排除以提高模型收敛速度及准确率。
大鹅
2021/01/30
8.3K0
【图像分割模型】全局特征与局部特征的交响曲—ParseNet
相信通过前面几篇介绍上下文信息整合的文章,大家已经能够体会到感受野对于分割网络效果的影响有多么巨大了。简单来说,感受野越大,网络所能“看见”的区域就越大,从而能够用于分析的信息就更多。由此,分割的效果也很有可能更好。
用户1508658
2019/07/28
6490
【图像分割模型】全局特征与局部特征的交响曲—ParseNet
相信通过前面几篇介绍上下文信息整合的文章,大家已经能够体会到感受野对于分割网络效果的影响有多么巨大了。简单来说,感受野越大,网络所能“看见”的区域就越大,从而能够用于分析的信息就更多。由此,分割的效果也很有可能更好。
OpenCV学堂
2019/05/23
1.2K0
稠密特征加入CTR预估模型的方法
稠密特征一般是相对稀疏特征来说的,我们知道类别特征经过独热编码之后比较稀疏,比如类别 [‘小猫’,‘小狗’,‘小熊’,‘小猴’] 被独热编码后的数据结构为[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],可以看到这种数据很稀疏,但是像桌子的长度这种稠密特征数据一般就是 [3.4,2.6,8.9,6.7] 这种。一般针对类别特征都是通过词嵌入的方法把稀疏特征转化为稠密特征然后再输入到神经网络中,不然直接输入会导致维度爆炸等问题,那么怎样把稠密数据加入到CTR预估网络模型中呢?
DeePR
2020/01/06
1.3K0
稠密特征加入CTR预估模型的方法
2、推荐广告算法模型之特征交叉模型
自动特征交叉模型包括:FM系列(FM、FFM、AFM)、Embedding+MLP(FNN、PNN、NFM、ONN)、双路并行(Wide&Deep、DeepFM、DCN、xDeepFM、AutoINT)
用户2794661
2022/08/04
8370
Thinkphp中模型的正确使用方式,ORM的思想概念
在这3个步骤中,我们可以知道,如果有运用到ORM思想抽象映射的,那就只可能是Query查询器模块,但是我们可以细查TP文档中关于数据集的描述。
宣言言言
2019/12/15
2.3K0
【机器学习的基本思想】模型优化与评估
  在前几篇文章中,我们介绍了k近邻算法和线性回归两个基本的机器学习模型。或许已经注意到,除了模型本身以外,要训练一个好的机器学习模型,还有许多需要注意的地方。例如,我们将数据集分为训练集和测试集,在前者上用不同参数训练,再在后者上测试,以选出效果最好的模型参数。此外,在线性回归一文中,我们还对数据集做了预处理,把每个特征下的数据分别做归一化,放缩到同一数量级上。诸如此类的细节在机器学习中还有很多,它们虽然本身和算法关系不大,但对模型最终效果的好坏又有着至关重要的影响,而把握好这些细节的前提是深入理解机器学习的基本思想。本文就来讲解这些机器学习模型的基本思想。
Francek Chen
2025/01/22
860
【机器学习的基本思想】模型优化与评估
机器学习模型的特征监控方案设计
KS-检验与t-检验等方法不同的是KS检验不需要知道数据的分布情况,可以算是一种非参数检验方法。当然这样方便的代价就是当检验的数据分布符合特定的分布时,KS-检验的灵敏度没有相应的检验来的高。在样本量比较小的时候,KS-检验作为非参数检验,在分析两组数据之间是否存在异常时相当常用。
Bo_hemian
2020/09/09
2.4K0
特征工程(六): 非线性特征提取和模型堆叠
如果线性子空间是平的纸张,那么卷起的纸张就是非线性流形的例子。你也可以叫它瑞士卷。(见图 7-1),一旦滚动,二维平面就会变为三维的。然而,它本质上仍是一个二维物体。换句话说,它具有低的内在维度,这是我们在“直觉”中已经接触到的一个概念。如果我们能以某种方式展开瑞士卷,我们就可以恢复到二维平面。这是非线性降维的目标,它假定流形比它所占据的全维更简单,并试图展开它。
机器学习AI算法工程
2019/10/28
1.3K0
特征工程(六): 非线性特征提取和模型堆叠
多值类别特征加入CTR预估模型的方法
我们都知道一般单值类别特征加入到CTR预估模型的方法是先对单值类别特征进行one-hot,然后和embedding 矩阵相乘转换成多维稠密特征,如下图 1 所示:
DeePR
2020/01/06
1.7K0
多值类别特征加入CTR预估模型的方法
微信的创造,创造者的微信
微信最新发布了一支主题片, 在里面, 写公众号的、开发小程序的、 喜欢分享视频动态的 经常发朋友圈的......都出镜了。 ▼ 为什么创造? 为了表里如一 为了不闲着 为了暗中观察 为了被点赞 为了儿子 为了月球漫步 为了无中生有 为了世界和平 为了新的开始 为什么创造? (没有为什么) 活着就创造点什么 让创造体现价值 微信 这应该是微信第一次这么正式地,专门用一支主题片,来对准它平台上的创造者们。 这些创造者,包括公众号作者、时刻视频记录者、表情设计师、小程序设计师、日常生活朋友圈分享者、COSPL
腾讯大讲堂
2019/06/11
1.8K0
微信的创造,创造者的微信
风控模型及特征的上线部署方法
序言: 作为年后的首篇实操干货文章,番茄风控一如既往向业内小伙伴输出相关的干货文章。有实操能落地,有数据可撸码,继续将会是番茄风控提供给各位小伙伴的业内标配内容。
全栈程序员站长
2022/08/19
1.3K0
风控模型及特征的上线部署方法
数据、特征与模型:算法模型训练的黄金三角!
训练一个优秀的算法模型,本质上是数据、特征与模型三者协同优化的过程。 一、数据质量:模型训练的基石 在数据采集阶段,"源数据完整性"和"数据收集时效性"的检查尤为关键,这决定了原始数据的可靠边界。
herain
2025/05/08
590
数据、特征与模型:算法模型训练的黄金三角!
使用图进行特征提取:最有用的图特征机器学习模型介绍
从图中提取特征与从正常数据中提取特征完全不同。图中的每个节点都是相互连接的,这是我们不能忽视的重要信息。幸运的是,许多适合于图的特征提取方法已经创建,这些技术可以分为节点级、图级和邻域重叠级。在本文中,我们将研究最常见的图特征提取方法及其属性。
deephub
2020/10/19
2.7K0
使用图进行特征提取:最有用的图特征机器学习模型介绍
微服务与大模型MoE设计思想的深度剖析
在当今快速发展的软件工程与人工智能领域,微服务架构和大模型MoE(Mixture of Experts)设计分别代表了分布式系统设计和深度学习模型架构的重要进展。微服务架构通过将大型复杂的应用程序分解为一系列小型、独立的服务,实现了系统的高度解耦和灵活性。而大模型MoE则通过组合多个专家模型,利用门控网络智能分配输入,实现了模型的高效性和可扩展性。本文将详细探讨微服务与大模型MoE的设计思想,揭示它们背后的核心理念、相似之处以及各自的优势。
用户7353950
2025/03/13
1400
微服务与大模型MoE设计思想的深度剖析

相似问题

只含正数据的倾向模型

20

如何构建“倾向购买”模型的数据集?

10

为什么随机森林特征的重要性倾向于高年代特征?

10

添加特征正在恶化的模型的特征选择

10

不同尺寸特征的模型

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档