我正在使用合成属性。最近我进入了以下博客:
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,验证属性的代码运行。 这有什么不对?有人可以解释一下吗?