Целочисленная валидация в Entity Framework - PullRequest
3 голосов
/ 22 января 2012

Я пытаюсь использовать DBContext для автоматической проверки моих сущностей и отображения сообщения на экране. Ошибки проверки правильности get успешно обнаруживают все ненулевые свойства типа string, так как они все еще имеют значение null. Моя проблема возникает, когда я пытаюсь проверить свойство типа int. По умолчанию это значение уже установлено на 0, и поскольку оно является идентификатором внешнего ключа, мне нужно, чтобы это значение не было 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

Ответы [ 2 ]

6 голосов
/ 23 января 2012

Вы можете использовать Range для проверки, если свойство находится в определенном диапазоне:

 [Range(1, int.MaxValue, ErrorMessageResourceName = "BarIdMustBeGreaterThanZero",
        ErrorMessageResourceType = typeof (Resources))]
 int BarId{ get; set; }
2 голосов
/ 22 января 2012

Попробуйте сделать его обнуляемым.

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

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

    public virtual Bar Bar { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...