gpt4 book ai didi

c# - EF4 CTP5 Code First 中的级联删除对子记录执行更新

转载 作者:行者123 更新时间:2023-11-30 17:19:35 26 4
gpt4 key购买 nike

使用描述的方法here ,我正在尝试删除父记录和所有关联的子记录。然而,发生的事情是父记录按预期被删除,但子记录键字段被更新为 NULL 而不是被删除。

我还将子表外键的删除规则设置为级联,在SQL Server管理中从父表中删除按预期执行级联删除。

我开始关注这个 walkthough , 并修改代码以执行删除。

这是代码:

 using (var db = new ProductContext())
{
var food = db.Categories.Find("FOOD");
((IObjectContextAdapter)db).ObjectContext.LoadProperty(food, f => f.Products);

db.Categories.Remove(food);
int recordsAffected = db.SaveChanges();

有什么我想念的吗?还是孤儿记录的预期结果?

最佳答案

由于 Product 类的外键属性(即 Product.CategoryId)具有可为 null 的类型(即 string)。要使此关联成为必需,以便子实体因删除父实体而被删除,您需要将 CategoryId 标记为 Required ,就像我在以下代码中所做的那样:

public class Category
{
public string CategoryId { get; set; }
public string Name { get; set; }

public virtual ICollection<Product> Products { get; set; }
}

public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }

[Required]
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
}

关于c# - EF4 CTP5 Code First 中的级联删除对子记录执行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781317/

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