我正在尝试使用ApiController的Validate()函数手动验证模型。 就像这里:Manually validate Model in Web api controller
它最终花费了我90%以上的CPU时间(〜90秒),而我只在此类的对象上一次调用它。
public class MyClass
{
public MyClass()
{
MyClass = new HashSet<MyItem>();
}
[Key]
public int ID { get; set; }
[Required]
[Index("IX_MyClass_Name", IsUnique = true)]
[MaxLength(50)]
public string Name { get; set; }
[Required]
[MaxLength(50)]
[Display(Name = "User ID")]
public string UserID { get; set; }
[Required]
[Display(Name = "Update Date")]
public DateTime UpdateDate { get; set; }
public virtual ICollection<MyItem> MyItems { get; set; }
}
有什么想法为什么表现这么差?
编辑:这是我在EF 6.2.0,.net 4.5.2上运行的代码
[Route]
[HttpPost]
public IHttpActionResult Add(MyClassDTO myClassDTO)
{
try
{
MyClass myClass = MyClassMapper.MapMyClass(myClassDTO, dbContext.ItemTypes.ToList());
Validate(myClass);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
else
{
dbContext.MyClasses.Add(myClass);
dbContext.SaveChanges();
MyClassDTO newDTO = MyClassMapper.MapDTO(myClass);
return Created(newDTO);
}
}
catch (DbUpdateException ex)
{
return Conflict();
}
catch (Exception ex)
{
return InternalServerError(ex);
}
}