




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.4平台通用配置深圳市信息职业技术学院——实体和界面配置Api实体属性实体属性特性实体特性实体配置实体介绍视图介绍视图配置视图属性配置知识扩展知识回顾控制器实现介绍;框架分组介绍;自定义分组的实现方式,三种入口的实现方式;自定义分组三种实现方式的实现示例;自定义分组的注意事项;学习目标通过本节学习可以:掌握实体包含的特性、实体属性、属性标签;掌握实体的配置;掌握界面的方法及使用;掌握界面方法的属性配置、命令配置、界面呈现配置;了解实体的组成;了解界面的组成。01实体介绍思考题平台框架定义的实体通用属性包括哪些?实体介绍实体介绍1、实体通常会映射数据库,所有新建实体类要建在服务端工程;2、实体类必须包含在对应文件夹下;文件夹以“实体名+S”进行命名;3、实体一定要包含命名空间,且命名空间要规范,一般为“对应工程名+文件夹名”;4、实体一般定义为部分类,直接或间接继承DataEntity;5、实体类继承的父实体尽量不要包含子列表属性,如果包含,子实体又没有用new关键字覆盖父实体属性,BS生成界面会报错;6、实体类中尽量只包含对应的属性,尽量不要去写与业务逻辑相关的代码;实体介绍实体介绍7、实体属性包含一般属性、引用属性、列表属性、只读属性和视图属性;默认情况下一般属性和引用属性会映射生成数据库表字段,其他的属性不会。8、创建实体的属性,我们只建业务相关的属性,业务属性不要和框架属性命名冲突,框架定义的属性包括:Id,CreateBy,CreateDate,InvOrgId,IsPhantom,SyncId,UpdateBy,UpdateDate;框架属性对应数据库表字段如下:9、实体类中的实体配置以“类名+Config”进行命名;02实体属性一般属性实体属性:实体属性是通过托管属性进行注册的,托管属性通过P<T>.Register()方法进行注册,T为所注册的托管属性的实体所有者(Owner)。一般属性:普通类型的属性#region
分类编码Code///
<summary>///分类编码///
</summary>[Label("分类编码")]public
static
readonlyProperty<string>CodeProperty=P<BigBookCat>.Register(e=>e.Code);///
<summary>///分类编码///
</summary>public
stringCode{get{returnGetProperty(CodeProperty);}set{SetProperty(CodeProperty,value);}}#endregion一般属性一般属性支持的属性类型:stringbool、bool?int、int?,long,long?double、double?DateTime、DateTime?枚举类型、Nullable<枚举类型>Byte[]引用属性引用属性:引用类型的属性,包括引用ID和引用实体两个属性,必须在同一实体中成对定义,属性类型为double。引用属性需指定引用类型ReferenceType,一般引用为Normal,子实体引用父实体为Parent。#region
读者管理与读者分类的关系ReaderCat[Label("类别号")]public
static
readonlyIRefIdPropertyReaderCatIdProperty=P<ReaderMan>.RegisterRefId(e=>e.ReaderCatId,ReferenceType.Normal);///
<summary>///读者管理与读者分类的关系Id///
</summary>public
doubleReaderCatId{get{return(double)GetRefId(ReaderCatIdProperty);}set{SetRefId(ReaderCatIdProperty,value);}}///
<summary>///读者管理与读者分类的关系///
</summary>public
static
readonlyRefEntityProperty<ReaderCat>ReaderCatProperty=P<ReaderMan>.RegisterRef(e=>e.ReaderCat,ReaderCatIdProperty);///
<summary>///读者管理与读者分类的关系///
</summary>publicReaderCatReaderCat{get{returnGetRefEntity(ReaderCatProperty);}set{SetRefEntity(ReaderCatProperty,value);}}#endregion引用属性引用Id引用实体引用类型,一般外键为Normal列表属性列表属性:子列表的属性,一对多关系中,父实体包含子实体的列表。#region
图书大类与小类的关系SmallBookCatList///
<summary>///图书大类与小类的关系///
</summary>public
static
readonlyListProperty<EntityList<SmallBookCat>>SmallBookCatListProperty=P<BigBookCat>.RegisterList(e=>e.SmallBookCatList);///
<summary>///图书大类与小类的关系///
</summary>publicEntityList<SmallBookCat>SmallBookCatList{get{return
this.GetLazyList(SmallBookCatListProperty);}}#endregion列表属性只读属性只读属性:只读属性用于表示实体中的一个只读的数据。只读属性主要为界面展现层设计。#region
全名FullName///
<summary>///全名///
</summary>[Label("全名")]public
static
readonlyProperty<string>FullNameProperty=P<BigBookCat>.RegisterReadOnly(e=>e.FullName,e=>e.GetFullName(),CodeProperty,NameProperty);///
<summary>///全名///
</summary>public
stringFullName{ get{return
this.GetProperty(FullNameProperty);}}private
stringGetFullName(){ return
this.Code+"("+this.Name+")";}#endregion只读属性视图属性视图属性:视图属性是通过引用属性懒加载的数据,主要为界面展现层设计。如果实体和继承的父实体中没有引用属性,则不能使用视图属性。#region
类别名称CatName
///
<summary>
///类别名称
///
</summary>[Label("类别名称")]
public
static
readonlyProperty<string>CatNameProperty=P<ReaderMan>.RegisterView(e=>e.CatName,p=>p.ReaderCat.CatName);
///
<summary>
///类别名称
///
</summary>
public
stringCatName
{
get{return
this.GetProperty(CatNameProperty);}
}
#endregion视图属性通过引用实体.属性名加载出来视图属性的内容思考题实体的一般属性支持哪些类型?03实体属性特性实体属性特性属性名称标签(Label):用于在实体属性上声明属性的显示名称。必填标签(Required):声明实体属性不能为空,字符串类型属性会标记该特性。非重复标签(NotDuplicate):声明实体属性不能重复。最大长度标签(MaxLength):声明实体属性的最大长度,字符串类型的属性会标记该特性。最小长度标签(MinLength):声明实体属性的最小长度,字符串类型的属性会标记该特性。最大值标签(MaxValue):声明实体属性的最大值,数值类型的属性会标记该特性。最小值标签(MinValue):声明实体属性的最小值,数值类型的属性会标记该特性。属性默认值(DefaultValue):属性默认值设置,作用域为当前实体。实体属性特性04实体特性实体特性实体类型特性(RootEntity,ChildEntity,QueryEntity):用于在实体上声明实体的类型。实体序列化特性(Serializable):用于在实体上声明实体可序列化。实体名称特性(Label):用于在实体上声明实体的显示名称。实体成员显示特性(DisplayMember):用于在实体上声明实体被引用时显示哪个属性的值,注意显示的成员必须是普通属性,且必须是数据库表中存在字段对应的属性。实体通用查询特性(CriteriaQuery):用于在实体上声明实体的查询使用通过查询条件,CriteriaQuery后面不关联类则使用的是框架标准查询,关联类即CriteriaQuery(typeof(类)),则查询自己实现。实体特性实体特性实体查询特性(ConditionQueryType):用于在实体上声明实体使用的查询实体类型(注意:实体查询标签与实体通用查询标签只能标记其中的一个)。下拉列表查询条件特性(QueryMembers):用于在实体上声明实体被引用时下拉列表的查询条件配置。实体配置项特性(EntityWithConfig):用于在实体上声明实体通用配置值。单据打印特性(BillPrintable):用于在实体上声明界面单据打印命令的配置。实体特性05实体配置思考题实体元数据配置支持哪些配置?实体配置实体配置包括“实体规则配置”和“实体元数据配置”。实体规则:重写AddValidations方法,这里配置的是标准规则,标准规则不能在界面进行启用和禁用操作,代码编写即生效,建议在项目上如果没有特殊的要求可以使用该规则进行实现(可以减少实体元数据的更新操作)。可以实现的标准规则验证:1、非空验证;2、长度验证;3、最大最小值验证;4、非重复验证(支持单个和多个属性的非重复验证);5、正则表达式的验证;6、实体验证(HandlerRule),该验证中可以查数据库进行验证操作。实体配置实体元数据配置实体元数据的配置,可以映射表、映射视图、映射属性和实体插件。映射数据库表:Meta.MapTable(“RES_EMP_GROUP”);映射视图1)直接读取数据库的视图:Meta.MapView(“V_RES_EMP_GROUP”);2)通过sql查询出来的视图:Meta.MapView(“(SELECT*FROMRES_EMP_GROUP)”);3)通过DB.Query查询出来的视图:
Func<IQuery>view=()=>DB.Query<Enterprise>().Where(p=>p.Level.IsResource==true&&p.InvOrgId==RT.InvOrgId).ToQuery();
Meta.MapView(view);//影射一条IQuery查询的视图,注意查询中不能出现当前实体,否则会出现死循环。映射表和视图实体元数据配置映射实体中的所有属性为数据库表字段:Meta.MapAllProperties();映射指定的属性及属性长度:
Meta.Property(Employee.CodeProperty).MapColumn().HasLength(50);Meta.Property(Employee.CodeProperty).MapColumn().DataTypeLength=“50";排除某些字段不映射数据库的设置:
Meta.MapAllPropertiesExcept(Employee.CodeProperty);指定某个字段不映射数据库:DontMapColumn;
Meta.Property(Employee.CodeProperty).DontMapColumn();建立唯一索引,使用HasIndex。
Meta.Property(Resource.KeyProperty).MapColumn().HasIndex(IndexTypeMeta.UniqueIndexed);建立组合索引:使用IndexGroupOnProperties设置。
Meta.IndexGroupOnProperties(Resource.CultureIdProperty,Resource.KeyProperty);忽略映射外键:IgnoreFK;
Meta.Property(SupplierShipBill.MasterBillIdProperty).ColumnMeta.IgnoreFK();映射属性实体元数据配置启用假删除:Meta.EnablePhantoms();禁用假删除:Meta.DisablePhantoms();启用库存组织:Meta.EnableInvOrg();
禁用库存组织:Meta.DisableInvOrg();启用实体排序:Meta.EnableSort();
禁用实体排序:Meta.DisableSort();启用树形插件:Meta.SupportTree();启用实体编辑日志记录插件:Meta.EnableEntityLog();启用数据同步插件:Meta.EnableDataSync();启用实体鉴别器:Meta.EnableDiscriminator("PersonAttachment");实体插件06视图介绍视图介绍视图:界面呈现的开发实现,包括界面布局,编辑器,按钮等相关界面操作。界面视图命名规范:实体类名+ViewConfig,继承:WebViewConfig<T>;T为对应的实体名称;界面视图只能建在客户端工程。视图配置的方法:1、配置视图:ConfigView,界面的入口,具体视图的列和命令操作配置不要在该方法中进行配置;2、列表视图配置:ConfigListView;3、表单视图配置:ConfigDetailsView,需要配置编辑模式为表单编辑(View.FormEdit())才会进入,需要注意的是一定要先使用编辑模式,再使用默认命令集,否则会出异常;4、查询视图配置:ConfigQueryView;查询命令中不要使用默认命令集,否则权限会多出一个view的权限配置;5、下拉视图配置:ConfigSelectionView,下拉视图中不用配置操作命令;6、导入视图配置:ConfigImportView(),导入命令中不用配置命令;7、自定义视图配置:使用默认命令集(View.UseDefaultCommands())不生效,要把自定义分组添加到额外的分组(DeclareExtendViewGroup)里面,配置具体的列要加Show。视图介绍07视图配置思考题列表视图配置可以做哪些配置?通用视图ConfigView配置授权可信的实体:View.AssignAuthorize(typeof(实体名))定义额外的视图,用于加载权限信息,生成授权界面:View.DeclareExtendViewGroup();判断分组信息,执行到具体的视图方法配置;设置编辑模式,View.InlineEdit();或者View.FormEdit();如果菜单配置中没有配置分组信息,编辑模式最好在ConfigListView中进行配置;ViewConfig配置列表视图ConfigListView配置表格设置不使用分页:View.WithoutPaging();使用编辑模式:View.InlineEdit();或者View.FormEdit();使用行为:View.AddBehavior("行为js的全名称空间");使用默认命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替换命令:View.ReplaceCommands(WebCommandNames.Delete,typeof(DeleteGoodCommand).FullName);清除所有命令:View.ClearCommands();ConfigListView配置列表视图ConfigListView配置设置父子显示比例,默认1:1,设置其他的比例使用View.UseLayoutSize(0.4,0.6);设置子布局:View.UseChildrenAsHorizontal();View.UseChildrenGroupAsHorizontal();设置前端排序:View.UseClientOrder();设置属性视图元数据:View.Property,View.ChildrenProperty和附加子属性视图元数据;设置不允许编辑:View.DisableEditing();表格列分组的使用:using(View.DeclareBand(“test”));ConfigListView配置表单视图ConfigDetailsView配置使用行为:View.AddBehavior("行为js的全名称空间");设置显示列数:View.HasDetailColumnsCount(2);设置表单的宽度和高度:View.UseDetail(600,1000);设置界面不允许编辑:View.DisableEditing();使用默认命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替换命令:View.ReplaceCommands(WebCommandNames.Delete, typeof(DeleteGoodsManageCommand).FullName);清除所有命令:View.ClearCommands();设置父子显示比例,默认1:1:View.UseLayoutSize(0.4,0.6);设置属性视图元数据:View.Property,View.ChildrenProperty和附加子属性视图元数据;ConfigDetailsView配置选择视图、导入视图、查询视图选择和导入视图选择视图和导入视图只需要配置列属性即可;选择视图的方法:ConfigSelectionView;导入视图的方法:ConfigImportView;查询视图查询视图的方法:ConfigQueryView;查询视图的按钮没有控制操作权限,这一块不需要设置操作命令,除非重写对应的命令;必须在实体中标记CriteriaQuery或者是CriteriaQueryProvider特性才会进入ConfigQueryView方法中;选择、导入和查询视图08视图属性配置思考题视图属性包括哪些配置?属性配置表格设置列宽:ShowInList(width:300);表单设置行和列:ShowInDetail(rowSpan:8,columnSpan:3);设置列显示位置:View.Property(p=>p.Describe).HasOrderNo(4);只读设置:View.Property(p=>p.Code).Readonly(p=>p.PropertyType!=ItemPropertyType.Catalog)联动设置:使用Cascade进行设置;属性配置属性配置表格冻结列设置:FixColumn();引用属性使用自定义数据源:View.Property(p=>p.SupplierItemId).UseDataSource()View.Property(p=>p.SupplierItemId).UseDataSource((entity,pagingInfo,keyword)=>{varproductTest=entityasProductTest;if(productTest!=null){varlist=RT.Service.Resolve<OrderTestController>().GetSupplierItem(productTest.SupplierTestId,keyword,pagingInfo);returnlist;}else return
newEntityList<SupplierItem>();});属性配置属性配置表单设置换行:BS表单设置换行需要在要设置换行的列的前一列设置对应的列宽和列所占的宽度;如下图希望工单另起一行,需要设置工单上面的一列占满整行和这一列显示的宽度;属性配置属性配置使用编辑器,具体查看编辑器的使用;默认值的设置:View.Property(p=>p.Code).DefaultValue(设置的值);String属性类型的默认值设置: View.Property(p=>p.Name).DefaultValue(“Test”);枚举默认值的设置: View.Property(p=>p.Name).DefaultValue((int)ItemType.Product)设置当前日期:View.Property(p=>p.Date).DefaultValue(System.DateTime.Today).UseDateEditor();设置当前时间:View.Property(p=>p.DateTime).DefaultValue(DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")).UseDateTimeEditor();属性配置属性配置下拉列表默认值设置:
请求后台数据库赋值:
View.Property(p=>p.EmpId).DefaultValue(RT.Service.Resolve<EmployeeController>().GetLoginUserEmployee())GetLoginUserEmployee方法在服务端控制器实现,如下:public
virtual
SIE.Resources.Employee
GetLoginUserEmployee()
{
var
employee
=
RF.GetById<SIE.Resources.Employee>(RT.IdentityId);
return
employee;
}
属性配置09知识扩展知识扩展后端获取实体的操作状态:p.PersistenceStatus=PersistenceStatus.New; PersistenceStatus为当前操作的状态,包括Unchanged、Modified、New、Deleted四种状态。RF.Save(entity)会走框架的验证,保存比较慢,如果是新增批量保存且校验单独处理了可以使用RF.BatchInsert(entity)效率会高很多。RF.Save(entity),会根据entity的实体状态去操作数据,如entity的实体状态为新增,调用RF.Save就会执行插入操作;如果entity的实体状态为M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南吉利汽车职业技术学院《化工设备机械基础》2023-2024学年第二学期期末试卷
- 河南师范大学《二十世纪西方文学名著精读》2023-2024学年第二学期期末试卷
- 山东工程职业技术大学《外国舞蹈史》2023-2024学年第二学期期末试卷
- 古代建筑屋顶的材质
- 供应室敷料区概念
- 居民对预防接种、儿童保健服务满意度调查问卷
- 地下墙接头施工方案
- 广西壮族自治区柳州市2024-2025学年高一上学期期末考试数学试题(解析版)
- 广东庭院水景施工方案
- 电梯拉槽施工方案
- 农村宅基地买卖合同的标准版该如何写5篇
- 2025年安徽中医药高等专科学校单招职业适应性测试题库及参考答案
- 湖北省武汉市2024-2025学年高三2月调研考试英语试题含答案
- 2025年浙江省现场流行病学调查职业技能竞赛理论参考试指导题库(含答案)
- GB/T 45222-2025食品安全事故应急演练要求
- 深静脉的穿刺术课件
- 2025届高考英语二轮复习备考策略课件
- 医学课件-儿童2型糖尿病诊治指南(2025)解读
- 《结构平法与钢筋算量》课件-梁平法施工图识读
- 山东大学外科学历年试题要点【表格版】
- 2025年南京机电职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析
评论
0/150
提交评论