繁体   English   中英

Silverlight RIA:RIA不会忽略模型上的服务器端扩展属性

[英]Silverlight RIA: Server-side extension properties on model are not ignored by RIA

在我的SilverLight应用程序中,我有一个简单的实体模型,其中包含一个表:[备注]。 备忘录表定义/类布局:

伪码模式

Partial Class Memo
  ID      [int autonumbering]
  Memo    [string]
  UserID  [int]
End Class

对于我的客户,我需要在UI中看到一个普通名称,而不是一个[UserID]数字,因此我们需要将该字段/属性[UserID]中的数字转换为可读的[UserName]。

为此,我们将使用以下方法扩展[Memo]类SERVER-SIDE:

伪码模式

Partial Class Memo
  UserName  [string]
End Class

因此,现在我们有了一个完整的类,其中同时包含UserID和UserName(对您使用绑定到数据网格时非常有用)

在CLIENT-SIDE,我们有一个缓存的用户列表,因此在CLIENT-SIDE,我们将EntitySet上传到客户端后填充UserName属性。 这是发生我的问题的地方:设置属性后,由DomainService引擎跟踪Entity对象的更改(DomainContext.HasChanges = true)。

因此,当加载一个包含100条记录的数据网格时,由于在客户端中设置了UserName属性,所有记录都被标记为已更改 ,并且在编辑1条记录后,所有100条记录都将被“更改”而不是仅1条记录重新发布到服务器。

由于此属性是扩展属性,并且我不想跟踪UserName的更改,因此我认为:让我们添加[Ignore]属性,但不要骰子。 DomainService不断跟踪用户名更改。 我也尝试了[IgnoreDataMember]属性,没有骰子。 [Exclude]属性不起作用,因为此后不再将其投影到客户端。

因此,在从数据库加载和扩展数据之后,我需要能够重置 DomainService的对象跟踪状态。 另一个解决方案是在服务器端扩展数据,但这暂时不是一个选择。

任何想法将不胜感激。

雷姆科·范·迪森

如果仅客户端需要您的新属性,则将Partial类扩展添加到客户端。 不到服务器端。

我们通常向客户端RIA服务项目中添加新的帮助程序属性(例如Fullname,该属性返回LastName + FirstName)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM