ASP.NET5和EF-使用LINQ替换子列表
创始人
2024-09-17 03:30:30
0

在使用ASP.NET 5和EF时,有时候我们需要替换子列表。这个问题可以通过使用LINQ来解决。

我们假设我们有一个父实体“Parent”和一个子实体“Child”,并且子实体与父实体是一对多的关系,并且在编辑父实体时,我们需要更新子实体的列表。以下是实现此目标的代码示例:

// GET: Edit parent
public async Task Edit(int parentId)
{
    var parent = await _context.Parents.FindAsync(parentId);

    // Get current child IDs
    var currentChildIds = await _context.Children
        .Where(c => c.ParentId == parentId)
        .Select(c => c.ChildId)
        .ToListAsync();

    // Get all children
    var allChildren = await _context.Children.ToListAsync();

    var viewModel = new EditParentViewModel
    {
        Parent = parent,
        Children = allChildren.Select(c => new ChildViewModel
        {
            ChildId = c.ChildId,
            Name = c.Name,
            IsSelected = currentChildIds.Contains(c.ChildId)
        }).ToList()
    };

    return View(viewModel);
}

// POST: Edit parent
[HttpPost]
public async Task Edit(EditParentViewModel viewModel)
{
    if (!ModelState.IsValid)
    {
        return View(viewModel);
    }

    var parent = await _context.Parents.FindAsync(viewModel.Parent.ParentId);

    // Replace child list
    parent.Children = viewModel.Children
        .Where(c => c.IsSelected)
        .Select(c => new Child { ChildId = c.ChildId })
        .ToList();

    // Update parent
    _context.Entry(parent).State = EntityState.Modified;

    await _context.SaveChangesAsync();

    return RedirectToAction(nameof(Index));
}

在上面的代码中,我们首先在“Edit”操作中获取当前子列表的所有ID。然后,我们将所有的子实体都添加到视图模型中,并设置“IsSelected”属性用于标识选中的子实体。在“POST: Edit parent”操作中,我们使用选中的子实体的ID来创建新的

相关内容

热门资讯

5分钟了解!同城游扎股子外 挂... 5分钟了解!同城游扎股子外 挂,牵手跑胡子外挂怎么用,细节揭秘(有挂脚本)1、许多玩家不知道牵手跑胡...
六分钟了解!白金岛字牌有外 挂... 您好,白金岛字牌有外 挂吗这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩...
两分钟了解!边锋老友棋牌有规律... 两分钟了解!边锋老友棋牌有规律么,牵手跑得快小程序脚本,教你攻略(有挂详情);一、牵手跑得快小程序脚...
我来教教你!壹起跑得快比鸡辅助... 我来教教你!壹起跑得快比鸡辅助软件(辅助挂)切实真的有挂(2025已更新)(哔哩哔哩);1、许多玩家...
十分钟了解!雀神小程序怎么发好... 十分钟了解!雀神小程序怎么发好牌,小吆干瞪眼有挂吗,扑克教程(有挂黑科技)1.雀神小程序怎么发好牌 ...
分享开挂内幕!闽游麻将助赢神器... 分享开挂内幕!闽游麻将助赢神器购买(透视)真是真的是有挂(2025已更新)(哔哩哔哩);闽游麻将助赢...
九分钟了解!唯思竞技麻将有挂吗... 九分钟了解!唯思竞技麻将有挂吗,边锋老友保皇有人装挂吗,必胜教程(有挂方法)1、首先打开边锋老友保皇...
科技新动态!掌中乐游戏有挂吗(... 科技新动态!掌中乐游戏有挂吗(透视)一直存在有挂(2024已更新)(哔哩哔哩)1、上手简单,内置详细...
一分钟了解!顺欣茶楼有假吗,兴... 一分钟了解!顺欣茶楼有假吗,兴动互娱辅助,解密教程(有挂解说)1、完成顺欣茶楼有假吗的残局,帮助玩家...
避坑细节!小闲川南棋牌有猫腻吗... 避坑细节!小闲川南棋牌有猫腻吗(透视)本来有挂(2022已更新)(哔哩哔哩)进入游戏-大厅左侧-新手...