使用child& amp;递归复制C#ASP.net对象父节点

时间:2017-06-19 17:49:16

标签: c# asp.net recursion asp.net-web-api duplicates

我正在尝试创建一个端点来获取“manualMaster”的ID并复制它&它的所有子节点都位于树之类的结构中,每个节点都有一个父节点,它们都与作为ManualMaster的主节点相关联。

以下是使用的模型

// GET/DUPLICATE: api/Manual/5
    [Route("{id}")]
    [HttpGet]
    [ResponseType(typeof(ManualMaster))]
    public async Task<IHttpActionResult> DuplicateManualMaster(int id)
    {
        ManualMaster manualMaster = await db.ManualMasters
            .Include(i => i.Steps)
            .FirstOrDefaultAsync(i => i.Id == id);
        //
        if (manualMaster == null)
        {
            return NotFound();
        }

        var dup = new ManualMaster
        {
            Brand = db.Brands.FirstOrDefault(i => i.Id == manualMaster.BrandId),
            BrandId = manualMaster.BrandId,
            //manualMaster.Id,
            Name = manualMaster.Name,
            Comment = manualMaster.Comment                
        };

        foreach (var step in manualMaster.Steps)
        {
            var newStep = step;
            newStep.Parent.Id = dup.Id;
            db.ManualSteps.Add(newStep);
            await db.SaveChangesAsync();
        }

        db.ManualMasters.Add(dup);
        await db.SaveChangesAsync();

        return Ok(dup);

    }

然后是获取ID并尝试复制的端点。

 newStep.Parent.Id = dup.Id;

我的问题是,目前在复制时,我将每个节点的id设置为主父ID,而不是创建树结构的各自ID。

{{1}}

因此,不是复制整个树,而是所有节点都具有相同的ID ......相反,我需要复制树结构当前的状态......

0 个答案:

没有答案