2011-06-26 9 views
1

がどのように私はシルバー+ドメインサービス+ EFと制約の検証を行うことができます検証を削除するには、私は時に検証する必要がある表2Silverlightのドメインサービス -</p> <p>表1は、主テーブル</p> <p>表1である

でFKですTable1を削除すると、Table2にはTable1に関連するレコードがありません。

Iテーブル2に関連するレコードがあり、例外がスローされます。

それは可能ですか?あなたのDomainServiceで

+0

バッキングデータストアとは何ですか? SQL Serverの場合、データベースに制約を設定する必要があり、EFはそれらを考慮に入れます(または、EFを更新していない場合は、少なくともサーバールールを破るときに例外をスローします)。 –

答えて

1

は、ちょうど、検証がdeleteメソッドに属性

[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"); 
     } 
    } 

が楽しむ検証方法では、あなたがやりたいです!

関連する問題