需要数据库访问的验证

时间:2015-08-05 00:57:49

标签: asp.net-mvc entity-framework validation entity-framework-6

My Entity Framework 6域使用属性,IValidatableObject使用其他规则。但是,某些约束需要访问数据库。由于我有几十个实体,DbContext.ValidateEntity看起来很乱,有很多调用来验证每个实体。

另一方面,DbContext.ValidateEntity不会将模型绑定上的实体验证为IValidatableObject。因此,如果我使用这样的代码,我将向用户发送属性和IValidatableObject验证:

if (ModelState.IsValid) // Looks for attribute validations and also IValidatableObject
{
    db.Foo.Add(foo);
    db.SaveChanges(); // DbContext.ValidateEntity triggers only here.
    return RedirectToAction("Index");
}

return View(foo);

我发现了许多变通方法,例如在IValidatableObject实现中使用DbContext,但它打破了验证范围的分离。

0 个答案:

没有答案