实体框架中的整数验证
本文关键字:整数 验证 框架 实体 | 更新日期: 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; }
}