实体框架中的整数验证

时间:2012-01-22 02:25:43

标签: c# entity-framework validation

我正在尝试使用DBContext自动验证我的实体并在屏幕上显示消息。 get验证错误成功检测到string类型的所有非可空属性,因为它们的值仍为null。当我尝试验证int类型的属性时,我的问题出现了。默认情况下,该值已设置为0,因为它是外键ID,我需要此值不为0,但不会检测到它。

        //Create a database context over current ObjectContext          
        var databaseContext = new DbContext(this, true);

        //Get Validation Errors
        var errors = databaseContext.GetValidationErrors();

        //Display errors on screen
        if (errors.Any())
        {
            var errorList = new StringBuilder();

            foreach (var error in errors)
            {
                foreach (var validationError in error.ValidationErrors)
                {
                    errorList.AppendLine(validationError.ErrorMessage);
                }
            }

            var vm = IoC.Get<ModalConfirmationViewModel>();
            vm.Message = errorList.ToString();

            var wm = IoC.Get<WindowManager>();
            wm.ShowDialog(vm);

            return false;
        }

思想?

由于 本

2 个答案:

答案 0 :(得分:6)

您可以使用Range来验证属性是否在特定范围内:

 [Range(1, int.MaxValue, ErrorMessageResourceName = "BarIdMustBeGreaterThanZero",
        ErrorMessageResourceType = typeof (Resources))]
 int BarId{ get; set; }

答案 1 :(得分:2)

尝试将其设为可以为空的。

public class Foo
{
    [Key]
    public int Id { get; set; }

    [Required]
    public int? BarId { get; set; }

    public virtual Bar Bar { get; set; }
}