我正在使用 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。