WCF RIA服务验证:验证该字段是唯一的,而不是将其作为密钥

时间:2012-02-14 00:57:51

标签: c# wcf validation ria

标题有点自我解释。我有一个已经定义了另一个密钥的实体(必须保持这种方式),我需要验证某个字段是否唯一。

我希望在元数据中使用Validator。但我不能使用DomainService,因为代码必须在服务器和客户端上运行。所以我不知道如何访问我的实体集以查看该字段的值是否唯一....

想法?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以这样做吗

  

string _Str = string.Empty;           public string Str           {               得到{return _Str; }

     

组      {         if()//在这里添加你的代码以检查它是否是唯一的           {

        throw new Exception("Please Enter EmailId");
    }
  _Str = value; OnPropertyChanged("Str");

    }

这将是ur属性的声明,你可以使它独一无二

答案 1 :(得分:0)

执行此操作的方法是在服务器端创建扩展名为.shared.cs的文件。将验证器放在:

public class CustomValidation
{
     public static ValidationResult ValidateUnique(object o, ValidationContext c)
     {
         #if SILVERLIGHT
             //Do actual validation client-side:
             MyObject mo = c.ObjectInstance as mo; //Object we are checking is type MyObject
             MyDS ctx = new MyDS; //Domain Service
             System.ServiceModel.DomainServices.Client.InvokeOperation<bool> 
                    isUnique = //some invoke operation in Domain Service;

             isUnique .Completed += (s, e) =>
             {
                 if (!isUnique .HasError && !isUnique.Value)
                 {
                      //return error;
                      mo.ValidationErrors.Add(error);
                 }
             };
         #endif
         //Server-side always returns success:
         return ValidationResult.Success;
     }
}