Validation 如何使用silverlight wcf ria服务防止表中的重复项

Validation 如何使用silverlight wcf ria服务防止表中的重复项,validation,silverlight-4.0,wcf-ria-services,Validation,Silverlight 4.0,Wcf Ria Services,我正在使用下面的链接开发一个示例应用程序 正如链接中提到的,它是一个使用wcf ria服务的silverlight业务应用程序 在示例中,添加新员工时,如果员工“标题”字段在数据库中是唯一的,并且用户尝试输入重复的标题,我如何防止它?我的意思是,如果一个输入了两个相同的“标题”,它应该正确地验证。在当前场景中,我如何做到这一点?我正在使用子窗口添加新员工 有人能帮忙吗?您可以使用一个CustomValidation解决您的问题,我认为这是最好的方法,因为您可能在客户端加载了所有记录,也可能没有

我正在使用下面的链接开发一个示例应用程序

正如链接中提到的,它是一个使用wcf ria服务的silverlight业务应用程序

在示例中,添加新员工时,如果员工“标题”字段在数据库中是唯一的,并且用户尝试输入重复的标题,我如何防止它?我的意思是,如果一个输入了两个相同的“标题”,它应该正确地验证。在当前场景中,我如何做到这一点?我正在使用子窗口添加新员工


有人能帮忙吗?

您可以使用一个CustomValidation解决您的问题,我认为这是最好的方法,因为您可能在客户端加载了所有记录,也可能没有,如果您没有加载所有员工,您需要到DB检查是否有一个标题为Being的记录

基本上是这样的:

首先创建负责员工验证的类

public class EmployeeValidationRules
{
}
然后,实际执行验证的方法:

public static ValidationResult ValidateTitle(string title, ValidationContext context)
{
    AdventureWorks_DataEntities objectContext = new AdventureWorks_DataEntities();

    Employee employee = context.ObjectInstance as Employee ;
    if (objectContext.Emplyees.Any(e => e.Title == employee.Title))
    {
        return new ValidationResult("Title Allready Exists", new string[] { "Title" });
    }

    return ValidationResult.Success;
}
在由您的domainservices在Employee类中生成的元数据上搜索title属性,您必须添加以下标记:

[CustomValidation(typeof(EmployeeValidationRules), "ValidateTitle")]     
public string Title{ get; set; } 
注意:所有这些都必须在服务器端完成

您可以在此处找到有关WCF验证的更多信息:

下面是Jeff Handley关于WCF验证的另一篇非常好的文章: