2011-06-26 92 views
1

我如何執行約束驗證使用Silverlight +域名服務+ EFSilverlight的域名服務 - 刪除驗證

表1是一個主表

表1是表2中

一個FK我需要的時候來驗證刪除Table1,表2沒有與Table1相關的記錄。

我Table2有記錄,然後拋出一個異常。

可能嗎?

+0

什麼是後備數據存儲?如果SQL Server應該在數據庫中設置約束,並且EF會考慮它們(或者至少在中斷服務器規則時拋出異常,如果沒有更新EF)。 –

回答

1

在你的DomainService,只需添加一個驗證屬性上的刪除方法

[CustomValidation(typeof(MyCustomValidator), "CustomDeleteTable1Validation")] 
public void DeleteTable1(Table1 table1) 
{ 
    //normal behavior 
    if ((table1.EntityState != EntityState.Detached)) 
    { 
     this.ObjectContext.ObjectStateManager.ChangeObjectState(table1, EntityState.Deleted); 
    } 
    else 
    { 
     this.ObjectContext.Table1s.Attach(table1); 
     this.ObjectContext.Table1s.DeleteObject(table1); 
    } 
} 

,然後做你想做的驗證方法

public static class MyCustomValidator 
    { 
     public static ValidationResult CustomDeleteTable1Validation(Table1 table1, ValidationContext context) 
     { 
      // check your values ... 
      var isOk=true; 
      // and ... 
      if(isOk) 
       return ValidationResult.Success; 
      else 
       return new ValidationResult(validationContext.DisplayName + " error"); 
     } 
    } 

享受!