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来创建新的

相关内容

热门资讯

科技揭秘!江西闲娱脚本,顺欣茶... 顺欣茶楼辅助软件是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
透视透明!财神13章脚本,德普... 透视透明!财神13章脚本,德普之星透视辅助插件(辅助挂)详细开挂辅助脚本;亲,德普之星透视辅助插件这...
一分钟揭秘!情怀宜春辅助挂定制... 您好:这款情怀宜春辅助挂定制交易平台游戏是可以开挂的,确实是有挂的,很多玩家在这款情怀宜春辅助挂定制...
透视免费!广东雀神挂件去哪买,... 广东雀神挂件去哪买是一款专注玩家量身打造的游戏记牌类型软件,在广东雀神挂件去哪买这款游戏中我们可以记...
盘点一款!如何下载安装胡乐辅助... 大家好,今天小编来为大家解答如何下载安装胡乐辅助脚本这个问题咨询软件客服可以免费测试直接加微信(13...
透明辅助!广西友乐解码器,we... 您好:这款wepoker辅助器安装包游戏是可以开挂的,确实是有挂的,很多玩家在这款wepoker辅助...
实测发现!圣盛荆州晃晃三五七辅... 圣盛荆州晃晃三五七辅助开挂教程视频分享装挂详细步骤在当今的网络游戏中,圣盛荆州晃晃三五七辅助作为一种...
透明挂透视!欢乐掌心辅助,we... 【亲,wepoker有辅助功能吗 这款游戏可以开挂的,确实是有挂的,很多玩家在这款wepoker有辅...
重大科普!四川熊猫辅助,微信小... 您好:微信小程序微乐辅助免费这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用...
透视最新!方片比鸡脚本,pok... pokemmo手机版透视脚本是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用...