WCF RIA Services v1 sp1,组合,验证子实体

时间:2011-06-30 08:44:13

标签: silverlight-4.0 wcf-ria-services composition

我正在使用合成属性。最近我进入了以下博客:

http://brettsam.com/2011/03/25/ria-services-composition-with-entity-framework/

所以,我使用上面博客文章中描述的方法来纠正我的子实体的实体状态,如下所示:

foreach (Child c in this.ChangeSet
                         .GetAssociatedChanges(currentParent, p => p.Children)) 
{  
  ChangeOperation change = this.ChangeSet.GetChangeOperation(c);
  switch (change) 
  {  
    case ChangeOperation.Delete: 
      ...
    case ChangeOperation.Insert: 
      // This is already done for us.
      break; 
    case ChangeOperation.None: 
      ...
    case ChangeOperation.Update: 
      this.ObjectContext.Children
                           .AttachAsModified(c, this.ChangeSet.GetOriginal(c)); 
      break; 
    default: 
      break; 
  } 
}

我还删除了默认生成的UpdateChild(Child currentChild)方法。 现在,代码工作,子实体按预期保存到数据库。然而, 我注意到一个问题。我的子实体的一些属性具有自定义验证属性 (继承自ValidationAttribute类)。他们根本没有被召唤。这个习俗 验证属性不是在silverlight客户端生成的,因为它使用 一些只在.NET中可用的类。但不是银光。所以,在 客户端验证通过,服务器端也不验证。但是,如果 我将UpdateChild方法添加回DomainService,验证属性的代码运行。 这有什么不对?有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

您应该查看EntityGraph

它比合成更强大,根据我的经验,它运作良好 - 包括你所描述的那种验证方案。实际上,您可以使用图表进行更复杂的跨实体验证。