0

我正在使用 WebAPI2,我有 2 个模型

public class Model1
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public string Description { get; set; }

    public IList<Model2> Children{ get; set; }
}

public class Model2
{
    public int Id { get; set; }
    [Required]
    public string Name { get; set; }
    public string Description { get; set; }
    public int Model1Id { get; set; }

    public virtual Model1 Model1 { get; set; }
}

在我的视图模型中,我使用Automapper将其转换为 ViewModel 我的第一个 CRUD 操作很好,因为 ViewModel 也与 Model1 相同。

对于我的第二个模型(Model2),以下是我的 ViewModel

 public class Model2ViewModel
{
    public int Id { get; internal set; }
    [Required]
    public string Name { get; set; }
    public string Description { get; set; }
    public int Model1Id { get; set; }

     public string Model1Name { get; internal set; }
     public string Model1Description { get; internal set; }
}

我的代码如下;

    public async Task<IHttpActionResult> Post(int model1Id, Model2ViewModel model)
    {
        try
        {
            model.Model1Id= model1Id;
            var item = Mapper.Map<Model2>(model);

             myRepo.Add(item);
             myRepo.SaveAsync()
            if (!result)
            {
                return BadRequest("Could not Save to the database");
            }

            return Created(uri, Mapper.Map<Model2ViewModel>(item));
        }
        catch (ArgumentException ex)
        {
            ModelState.AddModelError(ex.ParamName, ex.Message);
            return BadRequest(ModelState);
        }
    }

我正在使用存储库模式,添加记录中的逻辑如下;

    public void Add(T entity)
    {
        entity.RecordStatus = DataStatus.Active;
        entity.CreatedDate = entity.UpdatedDate = DateTime.UtcNow;
        _context.Set<T>().Add(entity);
    }

    public async Task<bool> SaveAsync()
    {
        int count = await _context.SaveChangesAsync();
        return count > 0;
    }

当我使用 Model2 的 post 方法时,出现类似 Model1 需要 Name 的错误。为什么Model1还试图创建。请帮我

注意:为简单起见,我直接在控制器代码中添加了我的 repo 调用。在实际代码中,它调用业务方法并从那里只调用 repo。

4

0 回答 0