为什么我的手动模型验证非常慢?

时间:2019-03-27 15:31:24

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

我正在尝试使用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);
     }
 }

0 个答案:

没有答案