コード例 #1
0
        /// <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;
                }
            }
        }
コード例 #2
0
    /// <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 更新。
    }