2012-01-22 8 views
3

DBContextを使用してエンティティを自動的に検証し、画面にメッセージを表示しようとしています。 get検証エラーは、string型のヌル値を持たないすべてのプロパティーを、まだ値がnullであるため、正常に検出します。 int型のプロパティを検証しようとすると、私の問題が発生します。値は既定ではすでに0に設定されています。外部キーIDであるため、この値を0にする必要はありませんが、検出されません。Entity Frameworkの整数検証

 //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

はNULL可能int型作ってみましょう。

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

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

    public virtual Bar Bar { get; set; } 
} 
+1

プロパティが自動的に毎回EDMXが生成されたエンティティに設定されています。私が知っている限り、私は手動で設定することはできません。 – benq143

6

プロパティが特定の範囲内にある場合は、検証するために範囲を使用することができます。

[Range(1, int.MaxValue, ErrorMessageResourceName = "BarIdMustBeGreaterThanZero", 
     ErrorMessageResourceType = typeof (Resources))] 
int BarId{ get; set; } 
関連する問題