/// <summary> /// 抄送 /// </summary> public void copyToMet() { string getSaveNo = getUTF8ToString("getSaveNo"); string cs_titleV = getUTF8ToString("cs_titleV"); string cs_messageV = getUTF8ToString("cs_messageV"); string[] emps = getSaveNo.Split(','); BP.WF.Node nd = new BP.WF.Node(this.FK_Node); BP.Port.Emp myemp = new BP.Port.Emp(); foreach (string emp in emps) { if (string.IsNullOrEmpty(emp)) { continue; } myemp.No = emp; myemp.Retrieve(); switch (nd.CCWriteTo) { case BP.WF.CCWriteTo.All: BP.WF.Dev2Interface.Node_CC_WriteTo_CClist(this.FK_Node, this.FK_Node, this.WorkID, emp, myemp.Name, cs_titleV, cs_messageV); BP.WF.Dev2Interface.Node_CC_WriteTo_Todolist(this.FK_Node, this.FK_Node, this.WorkID, emp, myemp.Name); break; case BP.WF.CCWriteTo.CCList: BP.WF.Dev2Interface.Node_CC_WriteTo_CClist(this.FK_Node, this.FK_Node, this.WorkID, emp, myemp.Name, cs_titleV, cs_messageV); break; case BP.WF.CCWriteTo.Todolist: BP.WF.Dev2Interface.Node_CC_WriteTo_Todolist(this.FK_Node, this.FK_Node, this.WorkID, emp, myemp.Name); break; default: break; } } }
/// <summary> /// Entity 的基本应用. /// </summary> public void EntityBaseApp() { #region 直接插入一条数据. BP.Port.Emp emp = new BP.Port.Emp(); emp.CheckPhysicsTable(); /* 检查物理表是否与Map一致 * 1,如果没有这个物理表则创建。 * 2,如果缺少字段则创建。 * 3,如果字段类型不一直则删除创建,比如原来是int类型现在map修改成string类型。 * 4,map字段减少则不处理。 * 5,手工的向物理表中增加的字段则不处理。 * 6,数据源是视图字段不匹配则创建失败。 * */ emp.No = "zhangsan"; emp.Name = "张三"; emp.FK_Dept = "01"; emp.Pass = "******"; emp.Insert(); // 如果主键重复要抛异常。 #endregion 直接插入一条数据. #region 保存的方式插入一条数据. emp = new BP.Port.Emp(); emp.No = "zhangsan"; emp.Name = "张三"; emp.FK_Dept = "01"; emp.Pass = "******"; emp.Save(); // 如果主键重复直接更新,不会抛出异常。 #endregion 保存的方式插入一条数据. #region 其他方法. BP.Port.Emp myEmp2 = new BP.Port.Emp(); myEmp2.No = "zhangsan"; //检查主键数据是否存在 ? bool isExit = myEmp2.IsExits; if (myEmp2.RetrieveFromDBSources() == 0) { /*说明没有查询到数据。*/ } #endregion . #region 数据复制. /* * 如果一个实体与另外的一个实体两者的属性大致相同,就可以执行copy. * 比如:在创建人员时,张三与李四两者只是编号与名称不同,只是改变不同的属性就可以执行相关的业务操作。 */ Emp emp1 = new BP.Port.Emp("zhangsan"); emp = new BP.Port.Emp(); emp.Copy(emp1); // 同实体copy, 不同的实体也可以实现copy. emp.No = "lisi"; emp.Name = "李四"; emp.Insert(); // copy 在业务逻辑上会经常应用,比如: 在一个流程中A节点表单与B节点表单字段大致相同,ccflow就是采用的copy方式处理。 #endregion 数据复制. #region 单个实体查询. string msg = ""; // 查询这条数据. BP.Port.Emp myEmp = new BP.Port.Emp(); myEmp.No = "zhangsan"; if (myEmp.RetrieveFromDBSources() == 0) // RetrieveFromDBSources() 返回来的是查询数量. { this.Response.Write("没有查询到编号等于zhangsan的人员记录."); return; } else { msg = ""; msg += "<BR>编号:" + myEmp.No; msg += "<BR>名称:" + myEmp.Name; msg += "<BR>密码:" + myEmp.Pass; msg += "<BR>部门编号:" + myEmp.FK_Dept; msg += "<BR>部门名称:" + myEmp.FK_DeptText; this.Response.Write(msg); } myEmp = new BP.Port.Emp(); myEmp.No = "zhangsan"; myEmp.Retrieve(); // 执行查询,如果查询不到则要抛出异常。 msg = ""; msg += "<BR>编号:" + myEmp.No; msg += "<BR>名称:" + myEmp.Name; msg += "<BR>密码:" + myEmp.Pass; msg += "<BR>部门编号:" + myEmp.FK_Dept; msg += "<BR>部门名称:" + myEmp.FK_DeptText; this.Response.Write(msg); #endregion 查询. #region 两种方式的删除。 // 删除操作。 emp = new BP.Port.Emp(); emp.No = "zhangsan"; int delNum = emp.Delete(); // 执行删除。 if (delNum == 0) { this.Response.Write("删除 zhangsan 失败."); } if (delNum == 1) { this.Response.Write("删除 zhangsan 成功.."); } if (delNum > 1) { this.Response.Write("不应该出现的异常。"); } // 初试化实例后,执行删除,这种方式要执行两个sql. emp = new BP.Port.Emp("abc"); emp.Delete(); #endregion 两种方式的删除。 #region 更新。 emp = new BP.Port.Emp("zhangyifan"); // 事例化它. emp.Name = "张一帆123"; //改变属性. emp.Update(); // 更新它,这个时间BP将会把所有的属性都要执行更新,UPDATA 语句涉及到各个列。 emp = new BP.Port.Emp("fuhui"); // 事例化它. emp.Update("Name", "福慧123"); //仅仅更新这一个属性。.UPDATA 语句涉及到Name列。 #endregion 更新。 }