如何在需要调用数据库时在Silverlight / RIA中进行验证?

时间:2011-02-28 21:36:41

标签: c# silverlight validation ria

我觉得有一个更好的方法来做到这一点,而不是我现在这样做。

我正在使用Silverlight 4,RIA和EF(使用Oracle适配器)。我正在将一条记录插入到表中,并使用Validation属性对其进行大量验证,但我有一条验证需要查询数据库以检查现有记录,然后才能插入新记录(这似乎应该是常见且简单的要求,没有?)

现在,我正在使用DomainService上的Invoke方法在客户端执行此操作。这看起来很蹩脚和愚蠢。但我无法弄清楚如何在服务器端真正属于它。

似乎应该有一种方法来处理所有这个服务器端并通知客户端验证错误,但我无法弄明白,几乎没有人似乎接近这个特定的验证方案。

2 个答案:

答案 0 :(得分:1)

WCF RIA提供了一种将验证附加到服务器端实体的方法。您构建了一个类,详细说明如下命名规则。

public static partial class FooRules
{
  public static ValidationResult FooIDUnique(Foo foo, ValidationContext context)
  {
    bool check = false;

    using (FooEntities fe = new FooEntities())
    { 
      check = fe.Foo.Any(f => f.FooId == foo.fooId); 
    }
    if (!check)
      return ValidationResult.Success;

    return new ValidationResult("FooID error msg,", new string[] { "FooID" });
  }
}

我已经整理了一个示例应用程序,该应用程序显示了使用RIA添加验证客户端和服务器端。

您可以下载here

答案 1 :(得分:0)

我不知道如何链接到特定条目,但请查看此帖子....

http://forums.silverlight.net/forums/p/212555/502113.aspx