我正在使用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);
}
}
我正在使用Repository Pattern,添加记录中的逻辑如下;
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。