1
我如何執行約束驗證使用Silverlight +域名服務+ EFSilverlight的域名服務 - 刪除驗證
表1是一個主表
表1是表2中
一個FK我需要的時候來驗證刪除Table1,表2沒有與Table1相關的記錄。
我Table2有記錄,然後拋出一個異常。
可能嗎?
我如何執行約束驗證使用Silverlight +域名服務+ EFSilverlight的域名服務 - 刪除驗證
表1是一個主表
表1是表2中
一個FK我需要的時候來驗證刪除Table1,表2沒有與Table1相關的記錄。
我Table2有記錄,然後拋出一個異常。
可能嗎?
在你的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");
}
}
享受!
什麼是後備數據存儲?如果SQL Server應該在數據庫中設置約束,並且EF會考慮它們(或者至少在中斷服務器規則時拋出異常,如果沒有更新EF)。 –