gpt4 book ai didi

entity-framework - 如何使用EF4 Fluent API将删除级联到链接表中?

转载 作者:行者123 更新时间:2023-12-04 07:24:20 25 4
gpt4 key购买 nike

我在现有(MSSQL 2008 R2)数据库中有两个表,这些表与链接表相关。

这两个表是“计划”和“提示”。链接表是“ PlanTipLinks”。

计划可以包含许多提示,并且提示可以与多个计划相关联(即,这是一个多对多关系)。在应用程序中,我只关心“ Plan.Tips”关系。我不需要Tip.Plans逆关系。

链接表中的外键引用不能为空。

我正在使用以下流利的API代码来映射这种关系:

modelBuilder.Entity<Plan>()
.HasMany(p => p.Tips)
.WithMany()
.Map("PlanTipLinks", (p, t) =>
new
{
PlanId = p.Id,
TipId = t.Id
});


这将在表中创建正确的条目。问题是,当我删除计划时,在PlanTipLinks表上会收到一个外键异常。

大概我需要告诉它在删除计划时将其级联到PlanTipLinks表中,但是我不确定如何执行此操作。我似乎无法使用HasMany / WithMany方法调用WillCascadeOnDelete方法。

我在这里想念什么?

最佳答案

从EF CTP4开始,无法通过Fluent API直接打开“多对多”关联上的级联删除。

也就是说,如果您要确保可以删除原理(例如,计划记录)而不必担心链接表中的从属记录(即PlanTipLinks),则无需在自EF Code First以来,数据库在涉及多对多关联时将负责客户端的级联删除。

例如,当您删除一个Plan对象时,代码首先足够聪明,可以首先发送一条delete语句来摆脱PlanTipLinks表中的从属记录,然后它将发送另一个delete语句来删除Plan记录。

有关更多信息,请查看以下帖子:

EF CTP4 cascade delete on many to many relationship

关于entity-framework - 如何使用EF4 Fluent API将删除级联到链接表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4158027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com