You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

758 lines
28 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Data;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BP.WF;
using BP.WF.Template;
using BP.En;
using BP.DA;
using BP.Port;
using BP.Demo.BPFramework;
using BP.Sys;
public partial class SDKFlowDemo_DemoEntity : System.Web.UI.Page
{
/// <summary>
/// ccbpm API开发 Demo
/// </summary>
public void ccbpmDemo()
{
// 让用户登录.
BP.WF.Dev2Interface.Port_Login("liyan");
//定义一个测试的流程编号.
string flowNo = "001";
#region ccbpm 的最简单的API操作。
//创建一个workid.
Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(flowNo);
//执行开始节点的发发送,获得一个发送对象.
BP.WF.SendReturnObjs objs= BP.WF.Dev2Interface.Node_SendWork(flowNo, workid);
//输出发送对象,流程在发送的时候会把发送的过程记录在这个对象里,比如:发送给谁?发送到那个节点了?提示的信息是什么?是否发送成功?
foreach (BP.WF.SendReturnObj obj in objs)
{
this.Response.Write("Key=" + obj.MsgFlag + " Value=" + obj.MsgOfText);
}
//输出发送成功信息.
this.Response.Write(objs.ToMsgOfHtml());
//获取发送到节点ID.
int nextNodeID = objs.VarToNodeID;
//获取接受人, 多个的话,用逗号分开的,比如: zhangsan,lisi
string nextWorker= objs.VarAcceptersID;
// 如果发送人这个时间感到发送错误了,忘记了填写东西 ,需要撤销就执行撤销API.
if (1 == 2)
{
//执行撤销API.
string undoMsg= BP.WF.Dev2Interface.Flow_DoUnSend(flowNo, workid);
}
//让下一个接受人登录, 让其执行发送。
BP.WF.Dev2Interface.Port_Login(nextWorker);
// 如果你要退回,就执行退回接口.
if (1 == 2)
{
string returnMsg= BP.WF.Dev2Interface.Node_ReturnWork(flowNo, workid, 0, nextNodeID, 101, "退回测试", false);
}
// 如果你要删除,就执行删除接口.
if (1 == 2)
{
BP.WF.Dev2Interface.Flow_DoDeleteFlowByReal(flowNo, workid, false);
return;
}
// 如果你要移交,就执行移交接口.
if (1 == 2)
{
BP.WF.Dev2Interface.Node_Shift(flowNo,nextNodeID,workid,0,"fuhui","移交测试.");
return;
}
// 执行下一步发送。
objs = BP.WF.Dev2Interface.Node_SendWork(flowNo, workid);
//objs.VarWorkID
#endregion ccbpm 的最简单的API操作。
}
protected void Page_Load(object sender, EventArgs e)
{
}
public void GEEntity()
{
Int64 workidOld = 9090;
Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork("001");
GEEntity entityA = new GEEntity("FrmIDA", workidOld);
GEEntity entityB = new GEEntity("FrmIDB", 1001);
}
/// <summary>
/// 写入日志
/// </summary>
public void WriteLogApp()
{
// 写入一条消息.
BP.Sys.Base.Glo.WriteLineInfo("这是一条消息. ");
// 写入一条警告.
BP.Sys.Base.Glo.WriteLineWarning("这是一条警告. ");
// 写入一条异常或者错误.
BP.Sys.Base.Glo.WriteLineError("这是一条错误. "); // 以上这些日志写入了 \DataUser\Log\*.*
//写入用户日志
BP.Sys.Base.Glo.WriteUserLog("Login", "stone", "系统登录");
BP.Sys.Base.Glo.WriteUserLog("Login", "stone", "系统登录", "192.168.1.100"); // 以上用户日志写入了 Sys_UserLog 表里.)
}
/// <summary>
/// 全局的基本应用,获取当前操作员的信息.
/// </summary>
public void GloBaseApp()
{
// 执行登陆。
BP.WF.Dev2Interface.Port_Login("guobaogeng");
// 当前登陆人员编号.
string currLoginUserNo = BP.Web.WebUser.No;
// 登陆人员名称
string currLoginUserName = BP.Web.WebUser.Name;
// 登陆人员部门编号.
string currLoginUserDeptNo = BP.Web.WebUser.FK_Dept;
// 登陆人员部门名称
string currLoginUserDeptName = BP.Web.WebUser.FK_DeptName;
//以上可以用到ccflow的表达式里, 使用@WebUser.No, @WebUser.Name, @WebUser.FK_Dept, @WebUser.FK_DeptName,
// 表达式里就会自动替换以上变量.
//退出.
BP.WF.Dev2Interface.Port_SigOut();
}
/// <summary>
/// 数据库操作访问
/// </summary>
public void DataBaseAccess()
{
#region 执行不带有参数.
// 执行Insert ,delete, update 语句.
int result = BP.DA.DBAccess.RunSQL("DELETE FROM Port_Emp WHERE 1=2");
// 执行多个sql
string sqls = "DELETE FROM Port_Emp WHERE 1=2";
sqls += "@DELETE FROM Port_Emp WHERE 1=2";
sqls += "@DELETE FROM Port_Emp WHERE 1=2";
BP.DA.DBAccess.RunSQLs(sqls);
//执行查询返回datatable.
string sql = "SELECT * FROM Port_Emp";
DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql);
//执行查询返回 string 值.
sql = "SELECT FK_Dept FROM Port_Emp WHERE No='" + BP.Web.WebUser.No + "'";
string fk_dept = BP.DA.DBAccess.RunSQLReturnString(sql);
//执行查询返回 int 值. 也可以返回float, string
sql = "SELECT count(No) as Num FROM Port_Emp ";
int empNum = BP.DA.DBAccess.RunSQLReturnValInt(sql);
//运行存储过程.
// string spName = "MySp";
//BP.DA.DBAccess.RunSP(spName);
#endregion 执行不带有参数.
#region 执行带有参数.
// 执行Insert ,delete, update 语句.
// 已经明确数据库 sqlserver 类型.
Paras ps = new Paras();
ps.SQL = "DELETE FROM Port_Emp WHERE No=@UserNo";
ps.Add("UserNo", "zhangsan");
BP.DA.DBAccess.RunSQL(ps);
// 不知道数据库类型.
ps = new Paras();
ps.SQL = "DELETE FROM Port_Emp WHERE No=" + BP.Difference.SystemConfig.AppCenterDBVarStr + "UserNo";
ps.Add("UserNo", "abc");
BP.DA.DBAccess.RunSQL(ps);
//执行查询返回datatable.
ps = new Paras();
ps.SQL = "SELECT * FROM Port_Emp WHERE FK_Dept=@DeptNoVar";
ps.Add("DeptNoVar", "0102");
DataTable dtEmps = BP.DA.DBAccess.RunSQLReturnTable(ps);
foreach (DataRow dr in dtEmps.Rows)
{
string no = dr["No"].ToString();
string name = dr["Name"].ToString();
}
//运行存储过程.
//ps = new Paras();
//ps.Add("DeptNoVar", "0102");
//spName = "MySp";
//BP.DA.DBAccess.RunSP(spName, ps);
#endregion 执行带有参数.
#region 向数据库存储、读写文件.
//写入实例.
string tmpFile = "c:\\111.txt";
BP.DA.DBAccess.SaveFileToDB(tmpFile, "WF_Flow", "No", "001", "FlowJson"); // FlowJson是一个已经存在的img字段.
//读取文件到指定的位置.
string saveToFile = "c:\\222.txt";
// string byt = BP.DA.DBAccess.GetBigTextFromDB(saveToFile, "WF_Flow", "No", "001", "FlowJson");
// FlowJson是一个已经存在的img字段, 系统就会生成一个 temp文件在指定的路径下. 返回的是一个byt 类型的数据流.
#endregion 向数据库存储文件.
}
public void EntitiesDemo()
{
//查询所有的实体,并输出.
Students stus = new Students();
stus.RetrieveAll();
string strs = "";
foreach (Student stu in stus)
{
strs += "<hr>";
strs += "<br>编号:" + stu.No + " 名称:" + stu.Name + " 地址:" + stu.Addr + " 性别:" + stu.XB + " 性别Text:" + stu.XBText;
}
this.Response.Write(strs);
//按照条件查询
Students stus1 = new Students();
stus1.Retrieve(StudentAttr.FK_BanJi, "01"); //查询所有班级编号 = 01 的学生.
strs = "";
foreach (Student stu in stus1)
{
strs += "<hr>";
strs += "<br>编号:" + stu.No + " 名称:" + stu.Name + " 地址:" + stu.Addr;
}
this.Response.Write(strs);
//按照条件查询
Students stus2 = new Students();
stus2.Retrieve(StudentAttr.FK_BanJi, "01", StudentAttr.XB, 0); //查询所有班级编号 = 01 的学生 and XB = 0
strs = "";
foreach (Student stu in stus2)
{
strs += "<hr>";
strs += "<br>编号:" + stu.No + " 名称:" + stu.Name + " 地址:" + stu.Addr;
}
this.Response.Write(strs);
//多条件查询.
Students stus3 = new Students();
BP.En.QueryObject qo = new QueryObject(stus3);
qo.AddWhere(StudentAttr.FK_BanJi, "01");
qo.addAnd();
qo.AddWhere(StudentAttr.XB, 0);
qo.addAnd();
qo.AddWhere(StudentAttr.ZZMM, 0);
int num = qo.DoQuery();
strs = "一共查询到{" + num + "}条数据.";
foreach (Student stu in stus3)
{
strs += "<hr>";
strs += "<br>编号:" + stu.No + " 名称:" + stu.Name + " 地址:" + stu.Addr + " 班级:" + stu.FK_BanJiText;
}
this.Response.Write(strs);
//按照sql查询.
string sql = "SELECT * FROM Demo_Student WHERE FK_BanJi='01' AND XB=0 AND ZZMM=0 ";
DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql);
}
public void EntityDemo()
{
Student stu = new Student();
stu.No = "9000";
stu.Name = "周朋";
stu.Addr = "shandong.jinan";
stu.Tel = "186601434343";
if (stu.IsExits == true)
stu.Update();
else
stu.Insert();
//执行Update.
Student stu1 = new Student();
stu1.No = "9000";
stu1.Retrieve();
stu1.Name = "李四";
stu1.Addr = "山东菏泽.";
stu1.Update();
//直接 delete .
Student stu2 = new Student();
stu2.No = "9000";
stu2.Delete();
}
/// <summary>
/// Entity 的基本应用.
/// </summary>
public void EntityBaseApp()
{
#region 直接插入一条数据.
BP.Port.Emp emp = new BP.Port.Emp();
emp.CheckPhysicsTable();
/* 检查物理表是否与Map一致
* 1如果没有这个物理表则创建。
* 2如果缺少字段则创建。
* 3如果字段类型不一直则删除创建比如原来是int类型现在map修改成string类型。
* 4map字段减少则不处理。
* 5手工的向物理表中增加的字段则不处理。
* 6数据源是视图字段不匹配则创建失败。
* */
emp.No = "zhangsan";
emp.Name = "张三";
emp.FK_Dept = "01";
emp.Pass = "pub";
emp.Insert(); // 如果主键重复要抛异常。
#endregion 直接插入一条数据.
#region 保存的方式插入一条数据.
emp = new BP.Port.Emp();
emp.No = "zhangsan";
emp.Name = "张三";
emp.FK_Dept = "01";
emp.Pass = "pub";
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 更新。
}
/// <summary>
/// Entities 的基本应用.
/// </summary>
public void EntitiesBaseApp()
{
//查询出来班级 = 01 所有学生。
Students stus = new Students();
stus.Retrieve(StudentAttr.FK_BanJi, "01");
foreach (Student stu in stus)
{
string str = "学生:" + stu.No + " 名称:" + stu.Name;
this.Response.Write( str+"<hr>");
}
//查询出来班级 = 01 and XB = 女的所有学生.
stus = new Students();
stus.Retrieve(StudentAttr.FK_BanJi, "01", StudentAttr.XB,0);
foreach (Student stu in stus)
{
string str = "学生:" + stu.No + " 名称:" + stu.Name;
this.Response.Write(str + "<hr>");
}
//查询全部的学生, 如果有缓存就会从缓存里查询.
stus = new Students();
stus.RetrieveAll();
//查询全部的学生, 从数据库里查询.
stus = new Students();
stus.RetrieveAllFromDBSource();
//访问集合的数量属性.
int numOfStus = stus.Count;
//判断集合里是否包含主键等于特定值的.
bool isExits = stus.Contains("zhangsan");
#region 查询全部
/* 查询全部分为两种方式1 从缓存里查询全部。2从数据库查询全部。 */
Emps emps = new Emps();
int num = emps.RetrieveAll(); //从缓存里查询全部数据.
this.Response.Write("RetrieveAll查询出来(" + num + ")个");
foreach (Emp emp in emps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
//把entities 数据转入到DataTable里。
DataTable empsDTfield = emps.ToDataTableField(); //以英文字段做为列名。
DataTable empsDTDesc = emps.ToDataTableDesc(); //以中文字段做为列名。
// 从数据库里查询全部。
Emps emps2 = new Emps();
num = emps2.RetrieveAllFromDBSource();
this.Response.Write("RetrieveAllFromDBSource查询出来(" + num + ")个");
foreach (Emp emp in emps2)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
#endregion 查询全部
#region 按条件查询
// 单个条件查询。
Emps myEmps = new Emps();
QueryObject qo = new QueryObject(myEmps);
qo.AddWhere(EmpAttr.FK_Dept, "01");
qo.addOrderBy(EmpAttr.No); // 增加排序规则,Order OrderByDesc, addOrderByDesc addOrderByRandom.
num = qo.DoQuery(); // 返回查询的个数.
this.Response.Write("查询出来(" + num + ")个,部门编号=01的人员。");
foreach (Emp emp in myEmps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
//等于.
myEmps.Retrieve(EmpAttr.FK_Dept, "01");
DataTable mydt = qo.DoQueryToTable(); // 查询出来的数据转入到datatable里。.
Emps myemps = new Emps();
myemps.Retrieve(EmpAttr.FK_Dept, "01");
foreach (Emp item in myemps)
{
this.Response.Write("<hr>人员名称:" + item.Name);
this.Response.Write("<br>人员编号:" + item.No);
this.Response.Write("<br>部门编号:" + item.FK_Dept);
this.Response.Write("<br>部门名称:" + item.FK_DeptText);
}
// 多个条件查询。
myEmps = new Emps();
qo = new QueryObject(myEmps);
qo.AddWhere(EmpAttr.FK_Dept, "01");
qo.addAnd();
qo.AddWhere(EmpAttr.No, "guobaogen");
num = qo.DoQuery(); // 返回查询的个数.
this.Response.Write("查询出来(" + num + ")个,部门编号=01并且编号=guobaogen的人员。");
foreach (Emp emp in myEmps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
// 具有括号表达式的查询。
myEmps = new Emps();
qo = new QueryObject(myEmps);
qo.addLeftBracket(); // 加上左括号.
qo.AddWhere(EmpAttr.FK_Dept, "01");
qo.addAnd();
qo.AddWhere(EmpAttr.No, "guobaogen");
qo.addRightBracket(); // 加上右括号.
num = qo.DoQuery(); // 返回查询的个数.
this.Response.Write("查询出来(" + num + ")个,部门编号=01并且编号=guobaogen的人员。");
foreach (Emp emp in myEmps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
// 具有where in 方式的查询。
myEmps = new Emps();
qo = new QueryObject(myEmps);
qo.AddWhereInSQL(EmpAttr.No, "SELECT No FROM Port_Emp WHERE FK_Dept='02'");
num = qo.DoQuery(); // 返回查询的个数.
this.Response.Write("查询出来(" + num + ")个WHERE IN (SELECT No FROM Port_Emp WHERE FK_Dept='02')人员。");
foreach (Emp emp in myEmps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
// 具有LIKE 方式的查询。
myEmps = new Emps();
qo = new QueryObject(myEmps);
qo.AddWhere(EmpAttr.No, " LIKE ", "guo");
num = qo.DoQuery(); // 返回查询的个数.
this.Response.Write("查询出来(" + num + ")个人员编号包含guo的人员。");
foreach (Emp emp in myEmps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
#endregion 按条件查询
#region 集合业务处理.
myEmps = new Emps();
myEmps.RetrieveAll(); // 查询全部出来.
// 遍历集合是常用的处理方法。
foreach (Emp emp in myEmps)
{
this.Response.Write("<hr>人员名称:" + emp.Name);
this.Response.Write("<br>人员编号:" + emp.No);
this.Response.Write("<br>部门编号:" + emp.FK_Dept);
this.Response.Write("<br>部门名称:" + emp.FK_DeptText);
}
// 判断是否包含是指定的主键值.
bool isHave = myEmps.Contains("Name", "郭宝庚"); //判断是否集合里面包含Name=郭宝庚的实体.
bool isHave1 = myEmps.Contains("guobaogeng"); //判断是否集合里面主键No=guobaogeng的实体.
// 获取Name=郭宝庚的实体,如果没有就返回空。
Emp empFind = myEmps.GetEntityByKey("Name", "郭宝庚") as Emp;
if (empFind == null)
this.Response.Write("<br>没有找到: Name =郭宝庚 的实体.");
else
this.Response.Write("<br>已经找到了: Name =郭宝庚 的实体. 他的部门编号="+empFind.FK_Dept+",部门名称="+empFind.FK_DeptText);
// 批量更新实体。
myEmps.Update(); // 等同于下一个循环。
foreach (Emp emp in myEmps)
emp.Update();
// 删除实体.
myEmps.Delete(); // 等同于下一个循环。
foreach (Emp emp in myEmps)
{
emp.Delete();
}
// 执行数据库删除,类于执行 DELETE Port_Emp WHERE FK_Dept='01' 的sql.
myEmps.Delete("FK_Dept", "01");
#endregion
}
/// <summary>
/// 展示EnttiyNo自动编号
/// </summary>
public void EnttiyNo()
{
// 创建一个空的实体.
BP.Demo.BPFramework.Student en = new BP.Demo.BPFramework.Student();
// 给各个属性赋值,但是不要给编号赋值.
en.Name = "张三";
en.FK_BanJi = "001";
en.Age = 19;
en.XB = 1;
en.Tel = "0531-82374939";
en.Addr = "山东.济南.高新区";
en.Insert(); //这里会自动给该学生编号从0001开始编号规则打开该类的Map.
string xuehao = en.No;
this.Response.Write("信息已经加入,该学生的学号为:" + xuehao);
//查询出来该实体。
BP.Demo.BPFramework.Student myen = new BP.Demo.BPFramework.Student(xuehao);
this.Response.Write("学生姓名:" + myen.Name);
this.Response.Write("地址:" + myen.Addr);
}
/// <summary>
/// 实体OID
/// </summary>
public void EnttiyOID()
{
// 创建一个空的简历实体.
BP.Demo.Resume dtl = new BP.Demo.Resume();
dtl.RefPK = "zhangsan"; //给关联的主键赋值.
dtl.NianYue = "2014年4月";
dtl.GongZuoDanWei = "济南驰骋公司"; // 工作单位.
dtl.ZhengMingRen = "李四"; //证明人,李四.
dtl.Insert(); //这里会自动给该实体主键OID赋值 他是一个自动增长的列.
this.Response.Write("信息已经加入,OID:" + dtl.OID);
//初始化该实体,并把它显示出来.
BP.Demo.Resume mydtl = new BP.Demo.Resume(dtl.OID);
this.Response.Write("工作单位:" + dtl.GongZuoDanWei + "证明人:" + dtl.ZhengMingRen);
}
/// <summary>
/// 具有MyPK类型的实体该类实体的主键是MyPK.
/// 它的主键是本表的2个或者3个以上的字段组合得来的.
/// </summary>
public void EnttiyMyPK()
{
// 创建一个员工考核实体.
BP.Demo.BPFramework.EmpCent en = new BP.Demo.BPFramework.EmpCent();
en.FK_Emp = "zhangsan";
en.FK_NY = "2003-01";
en.MyPK = en.FK_NY + "_" + en.FK_Emp;
en.Cent = 100;
en.Insert(); // 插入到数据库里.
this.Response.Write("信息已经加入,Cent:" + en.Cent);
BP.Demo.BPFramework.EmpCent myen = new BP.Demo.BPFramework.EmpCent(en.MyPK);
this.Response.Write("人员:" + myen.FK_Emp + ",月份:" + myen.FK_NY+", 得分:"+myen.Cent);
}
/// <summary>
/// 树的实体包含了No,Name,ParentNo,Idx 必须的属性(字段),它是树结构的描述.
/// </summary>
public void EnttiyTree()
{
//创建父节点, 父节点的编号必须为1 ,父节点的ParentNo 必须是 0.
FlowSort en = new FlowSort("1");
en.Name = "根目录";
//创建子目录节点.
FlowSort subEn = (FlowSort)en.DoCreateSubNode();
subEn.Name = "行政类";
subEn.Update();
//创建子目录的评级节点.
FlowSort sameLevelSubEn = (FlowSort)subEn.DoCreateSameLevelNode();
sameLevelSubEn.Name = "业务类";
sameLevelSubEn.Update();
//创建子目录的下一级节点1.
FlowSort sameLevelSubSubEn = (FlowSort)subEn.DoCreateSameLevelNode();
sameLevelSubSubEn.Name = "日常办公";
sameLevelSubSubEn.Update();
//创建子目录的下一级节点1.
FlowSort sameLevelSubSubEn2 = (FlowSort)subEn.DoCreateSameLevelNode();
sameLevelSubSubEn2.Name = "人力资源";
sameLevelSubSubEn2.Update();
/**
* 根目录
* 行政类
* 日常办公
* 人力资源
* 业务类
*
*/
}
/// <summary>
/// 多对多的关系,这种实体就有两个列(属性)
/// 这俩个列都是外键,并且也是该表的主键.
/// </summary>
public void EnttiyMM()
{
//BP.Port.EmpStation en = new BP.Port.EmpStation();
//en.FK_Emp = "zhangsan";
//en.FK_Station = "01";
//en.Insert();
}
/// <summary>
/// 与文件相关的操作.
/// </summary>
public void EnttiyOptionWithFile()
{
//把一个文件存入到entity.
string fileFullName = "c:\\temp.doc";
Flow fl = new Flow("001");
fl.SaveFileToDB("ABC",fileFullName); //如果没有ABC 字段,系统就会自动创建。
//把流存入数据库entity.
byte[] betys = null; ;
fl = new Flow("001");
fl.SaveFileToDB("ABC", betys); //如果没有ABC 字段,系统就会自动创建。
//获取文件.
string saveTo="c:\\tempfile.doc";
fl.GetFileFromDB("ABC", saveTo);
//特别说明,使用该方法,必须是已经存在数据库的一个实体,在没有插入之前,是不能调用的。
}
}