用友u9-ubf应用开发手册内容摘要:
alData 是在查询后刷新,对于删除, OriginalData 没什么意义,取决于删除对象的加载方式,简单说,就是在 OnSetDefaultValue/ OnInserting/ OnInserted 中,新建对象的OriginalData 是一个 id 为 0 的空实体对象,在 OnSetDefaultValue/ OnUpdating / OnUpdated 中,修改对象的 OriginalData 是旧对象 为什么我访问某实体对象的 OriginalData 的属性为空 首先,看 OriginalData 对象的 ID,如果为 0,表示是一个空对象,所有的属性为默认值,请参考 OriginalData 刷新的时机判断这个访问操作是不是新建,这个对象是标准的查询出来的还是通过 CopyTo 的方式构造的(实体基类的 CopyTo 不涉及 OriginalData) 如果 OriginalData 有有效的 ID,检查这个对象的加载方式,看看是不是特殊的加载 方式引起属性为空 OriginalData 的关联对象 OriginalData 和 CopyTo 方法很类似,只完整实现了对基本属性的拷贝,对于关联实体,实际上是不拷贝的,这样,出现 的访问方式,对 bEntity,是懒加载上来的 实体的状态 SysState 实体的状态,为枚举对象,开发人员主要关心以下 4 个枚举值: Inserted, Updated, Deleted,Unchanged,分别对应实体的新建,修改,删除,不变化 (查询返回的初始状态 ) 是否需要持久 化 NeedPersistable NeedPersistable 表示这个对象是否需要持久化,如果为 false,则这个对象将不会参与持久化 Session 基本概念和使用方式 在现在 UBF 中, Session 的本意是 work unit,即持久层的一个边界,非常轻,主要用作批量提交,并标识这次批量提交的边界。 在 session 里面的 CUD 操作会受持久层控制,而 seesion外实体是不受控制的,所以,做 CUD 操作要在 session 里面完成,一般建议一个 BP 调用最好都有一个大 session 包住,这样,在里面的操作就 不用多次开 Session,性能会好些 关于事物, session 仅仅是一个持久层边界,不涉及到事务等概念,目前 UBF 的事物支持在 AOP 上定义,可以在 BP 上设置 当发生 session 嵌套的情况时,每次提交都是真正提交 using (ISession session1 = ()){ ... using (ISession session2 = ()){ ... ()。 //提交更改,但只是 Session2范围内的修改更新 } ()。 //提交更改,只处理 Session1的修改更新 } 当前 ISession 可以通过 Session 的 Current 属性获得,每调用一次 Session 的 Open 方法,Current 属性都会被更新 在一个 Session 范围内,可以分步提交, using(ISession session1 = ()){ Ass1to1 objA1 = ()。 ()。 //提交 objA1 的新建动作 Ass1to1 objA2 = ()。 ()。 //提交 objA2 的新建动作 } 对外接口 Create(IEntity entity) 将 entity 对象的状态设置为 ,并加入到当前的session 中 Modify(IEntity entity) 将 entity 对象的状态设置为 . Updated,并加入到当前的session 中 Remove(IEntity entity) 如果当前 session 有这个 entity,且状态为 insert,则从当前 session 中移出这个对象,其他情况下,将 entity 对象的状态设置为 . Deleted,并加入到当前的 session 中 InList(IEntity entity) 将 entity 加入到当前的 session 中 objA = ()。 = Test。 using (ISession s = ()) { (objA)。 ()。 } ((ID = 39。 + + 39。 ))。 DeList(IEntity entity) 将 entity 从 session 中移出 using (ISession s = ()) { objA = ()。 = 333。 (objA)。 ()。 } ((ID = 39。 + + 39。 ))。 实体的操作 增加实体 简单实体: 模型如下,对实体 A 操作 常规做法: 通常我们新建实体是要求在 session 里面建立: using (ISession session = ()) { obj = ()。 ... ()。 } 特殊做法: 遇到一些特殊情况,需要在 session 外面 new 一个对象时。 这种做法很特殊,需要显式在一进入 sesssion 时调用 (obj),不推荐 A_Ass1to1 obj = new A_Ass1to1()。 using (ISession session = ()) { //一进入 session,操作对象之前(包括设置实体的状态,赋值等所有的相关的操作之前) //要显示调用 (obj) (obj)。 = 111。 = aaa。 ()。 } 主从实体: 1 对 1,其中 A_Com1c1 为主实体, B_Com1c1 为非主实体,注意红字的写法 A_Com1c1 objA。 B_Com1c1 objB。 using (ISession session = ()) { objA = ()。 = 1000。 = objA。 objB = (objA)。 = 1001。 = objB。 ()。 } 1 对多: 其中 A_Com1cN 为主实体, B_Com1cN 为非主实体,注意红字的写法。 对于非主实体,有两种新建方式,这两种方式都只支持 A_Com1cN objA。 B_Com1cN objB。 using (ISession session = ()) { objA = ()。 = 111。 //方式一 objB = (objA)。 = 222。 objB = (objA)。 = 333。 //方式二 objB = ()。 = 444。 objB = ()。 = 555。 ()。 } 查询实体 (关于 OQL 和参数的用 法,见实体查询这个章节 ) 查单个实体:下面的操作为查询一条ID为“111”的纪录 FindByID 方法是先从缓存里面取,缓存没有再去数据库取 , A_Com1cN obj = . FindByID(111)。 Find 方法是直接从数据库取 A_Com1cN objA = (ID = 111)。 查实体集合 FindAll 方法是直接从数据库取,参数为 OQL 语句 list = ()。 修改实体 简单实体 常规做法 通常我们修改实体是要求在 session 里面建立 using(ISession session = ()){ Customer obj = . FindByID(id)。 if(obj!=null){ = new name。 } ... ... ()。 } 特殊做法 遇到一些特殊情况,需要外面传进的实体 时,需要显式调用 session. Modify(obj),不推荐 using (ISession session = ()) { (obj)。 ()。 } 主从实体: 1 对 1 1 对多 using (ISession session = ()) { objA = (ID = 39。 + + 39。 , null)。 bList =。 bList[0].Name_B_Com1cN = aaa。 bList[1].Name_B_Com1cN = bbb。 ()。 } 删除实体 简单实体 using(ISession session = ()){ Customer obj = (id)。 if(obj!=null){ ()。 } ... ... ()。 } 主从实体: 删主实体会自动全部删除从实体 using (ISession session = ()) { objA = (ID = 39。 + + 39。 , null)。 //会自动删除 objA 及 objA 下所有的从实体 ()。 ()。 } 只删除从实体: 删除从实体有两种方式,一种是调用从实体的 (0),一种是调用 (b),这两种方式是等价的 using (ISession session = ()) { objA = (ID = 39。 + + 39。 , null)。 bList =。 B_Com1cN b = bList[2]。 (0)。 (b)。 ()。 } Qamp。 A 对于一对多组合,我怎样知道删除的子对象 我们知道,对于一对多的情况,当我们对子对象调用 Remove 方法时,该对象会从当前的集合中移出,即子对象的集合存放的是有效的对象,是新建和修改的对象。 如果我们还需要访问删除的对象,可以从当前的 List 的属性 DelLists 中找到。 对一对多组合的子对象作集合 Clear 操作,怎么没有删除 需要注意,实体的删除动作只能用 Remove 方法, Clear 是集合本身的方法,不是持久层提供的删除自对象的方法 实体的查询 BE 的查询这块主要有 3 个查询类, EntityDataQuery, EntityQuery 和 EntityViewQuery,EntityDataQuery 主要用于希望返回。用友u9-ubf应用开发手册
相关推荐
,为企业管理层提供 及时有效的信息,方便决策 ◆ 多层次的协同机制,即使适应市场变化 提升管理水平 ◆ 企业制度与系统有机结合,规范工作流程,规范管理 ◆ 有效的风险控制机制,帮助企业规避经营风险 ◆ 建立高效的物流体系 ◆ 实现企业的统一管理,合理进行企业资源调配 建立竞争优势 ◆ 充分考虑医药商业企业的业务运作特点,并将 质量管理思想体系 精细化地授权到每个人员的操作范围,
志,薪资发放处才执行扣税。 ②“项目基本信息”:由集团建立项目时确定,不可修改。 其中:“增减属性”:针对应发 合计、实发合计而定义的增项、减项、其他项。 应发合计等于增项的合计,实发合计等于应发合计减去减项合计,其他项为计算增项或减项的过程项目,或用于填写备注、说明等内容的项目。 例如:奖金 奖金 2 等是用于计算月奖金、季度奖金、年度奖金等增项的过程项目。 “小数位数”:显示位数。 用友软件
选中需要修改的 供方评估方法 后,单击〖修改〗可以对该 供方评估方法 执行修改操作,修改完毕 房地产行业产品实施手册 第 15 页共 154 页 后,单击 〖保存〗 按钮,将修改内容保存;如果您不想保存修改的 供方评估方法 信息,单击〖取消〗按钮,返回到修改前状态。 3. 如何 删除 供方评估方法 选择要修改的 供方评估方法 档案,单击〖删除〗并确认系统提示后,可以对该项目档案执行删除操作。
业内企业生产厂家的药品,全国分子公司、办事处等分支 机构都属于销售公司的下属机构,属于业务协作关系,销售总公司的下属部门分别承担销售业务数据、资金、客户、物流、质量检验、营销推广等的管理工作; 药品生产厂家:可以是医药制药企业自身的生产厂,也可是行业内的其他生产厂家,业务和财务管理独立,其药品接受总公司统一的管理和监控; I. 分子公司和办事处等分支机构,根据规模和市场需要
疫,其工作流程见附录 A。 宰前检疫 入场检疫 报检 生猪到达屠宰场(厂、点)时,须向当地动物防疫监督机构报检,并出示有效检疫证明和运载工具消毒证明。 查证验物 查验动物产地检疫合格证明(或出县境动物检疫合格证明)和运载工具消毒证明;查验生猪是否来自疫区,证明是否逾期失效,证物是否相符;了解运输途中 病死情况。 回收检疫证明和消毒证明。 临床检验 入场生猪 卸车后入 仓前的 检疫 按 GB
码 ):包括访问权限、云台镜头控制权限、添加删除用户权限等。 3) .集中 存储 根据需求对前端视频进行集中存储。 : 负责所有设备的控制与图像信号的处理及显示,也称监看部分。 由 PC 客户端、 WEB 端、手机客户端来完成。 PC 客户端观看 : 管理部门可通过我公司提供的专用客户端软件通过专网 /互联网同时查看所有网络摄像机实时图像,客户端具有多 画面分屏查看功能,所有监控点图像一目了然