实体框架中的整数验证

本文关键字:整数 验证 框架 实体 | 更新日期: 2023-09-27 18:21:07

我正在尝试使用DBContext自动验证我的实体并在屏幕上显示消息。get验证错误成功检测到字符串类型的所有不可为null的属性,因为它们的值仍然为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;
        }

想法?

谢谢Ben

实体框架中的整数验证

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

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

尝试使其成为可为null的int.

public class Foo
{
    [Key]
    public int Id { get; set; }
    [Required]
    public int? BarId { get; set; }
    public virtual Bar Bar { get; set; }
}