您的位置:首页 > 其它

WCF RIA Services 学习笔记五 表示模型

2011-05-04 11:08 393 查看
WCF RIA Services 允许您创建从数据访问层的多个实体聚合数据的数据模型,即表示模型。当您不想直接将数据访问层中的实体公开给客户端时,可以使用此功能。使用表示模型时,可以通过只更改表示模型而不更改客户端来响应数据访问层中的更改。此外,通过设计只聚合与客户端的用户有关的那些字段的模型,可以简化客户端代码。本主题说明如何创建、查询和更新一个表示模型以及在中间层或数据源中设置更改时如何将值传回客户端。

本Demo演示的是,要取表一中的部分字段,表二中的部分字段,表三中的部分字段,把三个表整合到一个表示模型中,显示在客户端,

表一是模块表Widget,表二是角色表,aspnet_role,表三是模块角色关系表WidgeIntRole,

要取出Widget表中的ID列和Name列,取出角色表中的aspnet_role中的角色名,和WidgeIntRole表中的ID列,组合成一个新集合绑定DataGrid集合上,

做法:创建表示模型,新建一个类包含所需的字段:

删除模块角色关系

1 /// <summary>
2 /// 删除角色模块关系
3 /// </summary>
4 /// <param name="currentModuteRole"></param>
5 public void DeleteModuteRole(ModuteRole currentModuteRole)
6 {
7 WidgetsInRoles widgetsInRolesEntity = rapEntities.WidgetsInRoles.Where(wr => wr.RoleId == currentModuteRole.RoleID && wr.WidgetId == currentModuteRole.ModuteID).FirstOrDefault();
8 this.rapEntities.WidgetsInRoles.DeleteObject(widgetsInRolesEntity);
9 }

先前的做法是:先查出三个表中的所有集合到客户端,
然后在三个集合中连接查询,再绑定到DataGrid,这样要做三次异步操作,性能差是不言而喻的,而且也查询出了很多不相关的信息,在本Demo只作了一次查询,过滤掉了无关的信息,不知道还没有更好的做法,抛砖引玉吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: