浅显来说BO就是Class映射到数据库的一种方式,类似ORM
?
?
1、找到Module方案,在BusinessObject文件夹右键
2、新增 XPO Business Object?
3、新建一个名称为:Company的BO对象
using DevExpress.Xpo;
using DevExpress.ExpressApp.DC;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
namespace DXApplication_ShanDong_TaiAn.Module.BusinessObjects.自定义登录
{
[DefaultClassOptions]
[XafDisplayName("组别")]
public class Company : BaseObject
{
public Company(Session session) : base(session) { }
private string name;
[XafDisplayName("名称")]
public string Name
{
get { return name; }
set { SetPropertyValue("Name", ref name, value); }
}
}
}
学习点1:建立的BO类自动继承BaseObject类,
学习点2: [XafDisplayName("组别")]标志标识字段名称对应前台显示名称
学习点3:???set { SetPropertyValue("Name", ref name, value); } 写法暂时就照这么些,具体原因是为了监听后期数据改变时使用,如果直接写 set{}其实也可以,不推荐
4、项目启动后查看数据库结构
Oid、OptimisticLockField、GCRecord 来自继承的BaseObject类。表述可能有误暂时这么理解也没问题
字段 | 含义 | 类型 | 含义 | Oid | 主键 | uniqueidentifier | GUID值,举例:123F34BA-98F3-4DDD-9FE1-07CA2FCA85C6 | Name | 名称 | nvarchar(100) | 这是用户自建的没特殊解释 | OptimisticLockField | 更新锁定 | int | 2个用户同时操作1条数据时锁定会防止2个用户同时保存导致数据不一致 | GCRecord | 删除标志 | int | 会生成一段【568449569】字样的数据,此字段为NULL时数据有效,非NULL时数据已经被删除 |
5、除了BaseObject还有那些是可以基础的
基类 | 命名空间 | 并发冲突(OptimisticLockField) | 主键生成 | 删除标志 | XPLiteObject | DevExpress.XPO | 不控制 | 否 | 否 | XPBaseObject | DevExpress.XPO | 控制 | 否 | 否 | XPCustomObject | DevExpress.XPO | 控制 | 否 | 是 | XPObject | DevExpress.XPO? | 控制 | 是(整型) | 是 | BaseObject | DevExpress.Persistent.BaseImpl | 控制 | 是(GUID) | 是 | DCBaseObject | ?DevExpress.ExpressApp.DC | 控制 | 是(GUID) | 是 |
?
|