我正在尝试使用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;
}
思想?
由于 本
答案 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; }
}