一,向中间代码添加业务逻辑
在RIA service中通常会涉及到一些业务逻辑不需要客户端调用,但中间层又不可或缺,也就是只在中间层中访问,客户端不需要访问,不需要将该方法公开为服务,使用 IgnoreAttribute 特性来标记该方法,这个在客户端不可见,下面的演示将添加一个新的应用,(如果应用名称不重复)该方法使用 IgnoreAttribute 特性进行了标记,以防止从客户端将该方法作为服务调用。
中间层业务逻辑1 /// <summary>
2
3 /// 判断是否存在相同的应用名称
4 /// </summary>
5 /// <param name="name"></param>
6 /// <returns></returns>
7 [Ignore]
8 public bool isExist( string name)
9 {
10 var temp = this .ObjectContext.BSMG_T_Content.Where(c => c.Name == name).OrderByDescending(c => c.ID).FirstOrDefault();
11 return temp == null ? false : true ;
12 }
13 /// <summary>
14 /// 添加应用
15
16 /// </summary>
17 /// <param name="bSMG_T_Content"></param>
18 public void InsertBSMG_T_Content(BSMG_T_Content bSMG_T_Content)
19 {
20 if ( ! this .isExist(bSMG_T_Content.Name)) // 调用isExist()方法
21 {
22 if ((bSMG_T_Content.EntityState != EntityState.Detached))
23 {
24 this .ObjectContext.ObjectStateManager.ChangeObjectState(bSMG_T_Content, EntityState.Added);
25 }
26 else
27 {
28 this .ObjectContext.BSMG_T_Content.AddObject(bSMG_T_Content);
29 }
30 }
31 }
二添加命名更新方法
在域服务类中,添加与命名更新方法的预期签名匹配的方法。
该方法应使用 UpdateAttribute 特性标记(同时 UsingCustomMethod 属性设置为 true),或是不返回任何值,而是接受某个实体作为第一个参数。
下面的示例演示一个方法,该方法允许具有更新当前应用中各个属性,
在客户端调用的时候,可直接调用,然后提交更新当前应用实例1 /// <summary>
2 /// 更新当前应用
3 /// </summary>
4 /// <param name="current"></param>
5 public void SetContentType(BSMG_T_Content current)
6 {
7 if (current.EntityState == EntityState.Detached)
8 {
9 this .ObjectContext.BSMG_T_Content.Attach(current);
10 }
11
12 }
bSMG_T_Content.SetContentType();
_rAPAdminAppMgmtDomainContext.SubmitChanges(onSubmitCallback, null);
三:添加调用操作服务方法如下:
客户端调用可作如下调用:
View Code1 InvokeOperation invokeOp = customerContext.GetName(OnInvokeCompleted, null );
2 private void OnInvokeCompleted(InvokeOperation invOp)
3 {
4 if (invOp.HasError)
5 {
6 MessageBox.Show( string .Format( " Method Failed: {0} " , invOp.Error.Message));
7 invOp.MarkErrorAsHandled();
8 }
9 else
10 {
11 result = invOp.Value;
12 }
13 }
未完....待续