小编hal*_*aed的帖子

删除EF Core中的相关数据

具有一对多关系的两个实体,例如凭证具有许多凭证详细信息,问题是当从相关数据(凭证详细信息)集合中删除一项,然后保存更改时,实体不会从相关表中删除

删除过程如下所示:

    var voucher = await _voucherRepository.GetCompleteVoucherAsync(Id);
    var item = voucher.VoucherDetails.FirstOrDefault();
    voucher.VoucherDetails.Remove(item);
    _dbContext.Update(voucher);    
    await _dbContext.SaveChangesAsync();
Run Code Online (Sandbox Code Playgroud)

模型看起来像:

 public class Voucher : BaseEntity
 { 
        public int Id {get; set;}
        -----
        public ICollection<VoucherDetail> VoucherDetails { get; set; }
 }

 public class VoucherDetail : BaseEntity
 {
        public int Id {get; set;}
        -----
        public int VoucherId { get; set; }
        public Voucher Voucher { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

这是上下文:

builder.HasOne(i => i.Voucher)
           .WithMany(i => i.VoucherDetails)
           .IsRequired().HasForeignKey(i => i.VoucherId)
           .OnDelete(DeleteBehavior.Cascade);
Run Code Online (Sandbox Code Playgroud)

存储库:

public async Task<Voucher> GetCompleteVoucherAsync(int id) …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core asp.net-core ef-core-2.0

7
推荐指数
1
解决办法
1万
查看次数