删除父项时删除子条目

时间:2018-05-11 20:16:30

标签: c#

我已经阅读了各种帖子,但似乎没有一个与我的问题相符。 当删除父项时,我需要删除链接到外键的子条目。

目前我有这段代码:

public async Task UpdateLineItemByOrderLineId(int orderLineId, int newQuantity)
    {
        var clientBasket = await GetBasketAsync();
        var lineItem = clientBasket.OrderLines.FirstOrDefault(x => x.OrderLineId == orderLineId);
        if (newQuantity == 0)
        {
            _orderLinesRepository.Delete(lineItem);
            _orderLinesRepository.Save();
        }

并且链接到以下存储库

public class OrderLinesRepository : GenericRepository<OrderLine>, IOrderLinesRepository
    {
        public OrderLinesRepository(IDbContextFactory dbContextFactory)
            : base(dbContextFactory)
        {
        }
    }

帖子似乎提到了实体框架等,并且正如我从一个解决方案中学习C#一样,完成后我没有看到反映EF的匹配代码。

我不一定需要删除子元素,只需将ForeignKey设置为null即可。需要注意的一点是,我可以将多个子条目链接到ForeignKey。

实现上述目标的正确实施是什么?

编辑:外键分配

    namespace TSW.Ecommerce.Data.Api
{
    public class OrderDelegate
    {
        [Key]
        public int OrderDelegateId { get; set; }
        [ForeignKey("OrderLineId")]
        public virtual OrderLine OrderLine { get; set; }
        public int? OrderLineId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
    }
}

1 个答案:

答案 0 :(得分:0)

正确的解决方案是:

foreach (var m in lineItem.DelegatesList.Where(f=>f.OrderLineId == orderLineId))
        {
          lineItem.DelegatesList.Remove(m);
        }