c# - 当我使用 Entity Framework 和 CodeFirst 方法将父实体的值设置为 null 时,如何从数据库中删除相关的子实体?

标签 c# entity-framework code-first cascading-deletes

例如我有 Order这个订单有 Reserve字段有 ICollection<ReserveItem> 。 我现在拥有的是:

订单类别

public class Order
{
    ...
    public Reserve Reserve {get; private set;}

    public void ClearReserve()
    {
        // Reserve.Items = null; or Resrver.Items.Clear()
        Reserve = null;
    }
}

储备舱位

public class Reserve
{
     public ICollection<ReserveItems> Items {get; set;}
     public DateTime ExpireDate {get; set;}
}

OrderRepository类

public OrderRepository
{
   ...
   public void ClearOrderReserve(Order order)   
   {
       order.ClearReserve();
       repostiry.InsertOrUpdate(order);
   }
   ...
}

在我的数据库上下文类中,我有:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    ...
    modelBuilder.Entity<Reserve>()
                .HasMany(pr => pr.Items)
                .WithRequired()
                .WillCascadeOnDelete();
    ...
}

如何正确删除Order.Reserve null 中的字段(将其值设置为 OrderRepository.ClearOrderReserve(Order order) )方法并在删除时启动级联以删除冗余 ICollection<ReserveItem>数据库中的记录?

最佳答案

将保留设置为 null 不会删除它。必须通过DbSet<Reserve>删除的Remove方法。

关于c# - 当我使用 Entity Framework 和 CodeFirst 方法将父实体的值设置为 null 时,如何从数据库中删除相关的子实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525365/

相关文章:

entity-framework - EFCore - 为什么我必须清空子对象才能阻止它们插入?一对多

entity-framework-4 - 首先是 EF 代码中的枚举

entity-framework - Code First Entity Framework 和 Windows Azure SQL

entity-framework - Entity Framework 包含对 varchar 列的查询

c# - Akka.Net ConsistencyHashing 路由器作为内存数据对象的负载均衡器

c# - 尝试在 Angularjs 中动态绑定(bind)我的 "ng-true-value"

c# - 如何将要在某些 XElement 上执行的操作作为参数传递?

c# - 异步记录对站点的每个请求的请求记录器

c# - 了解异常 "An entity object cannot be referenced by multiple instances of IEntityChangeTracker."

c# - 使用 Entity Framework 存储类别的枚举或实际表?