MES開發(fā)與應(yīng)用 課件 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺配置-實(shí)體和界面配置Api_第1頁
MES開發(fā)與應(yīng)用 課件 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺配置-實(shí)體和界面配置Api_第2頁
MES開發(fā)與應(yīng)用 課件 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺配置-實(shí)體和界面配置Api_第3頁
MES開發(fā)與應(yīng)用 課件 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺配置-實(shí)體和界面配置Api_第4頁
MES開發(fā)與應(yīng)用 課件 工業(yè)管理軟件開發(fā)基礎(chǔ)-平臺配置-實(shí)體和界面配置Api_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

3.4平臺通用配置深圳市信息職業(yè)技術(shù)學(xué)院——實(shí)體和界面配置Api實(shí)體屬性實(shí)體屬性特性實(shí)體特性實(shí)體配置實(shí)體介紹視圖介紹視圖配置視圖屬性配置知識擴(kuò)展知識回顧控制器實(shí)現(xiàn)介紹;框架分組介紹;自定義分組的實(shí)現(xiàn)方式,三種入口的實(shí)現(xiàn)方式;自定義分組三種實(shí)現(xiàn)方式的實(shí)現(xiàn)示例;自定義分組的注意事項(xiàng);學(xué)習(xí)目標(biāo)通過本節(jié)學(xué)習(xí)可以:掌握實(shí)體包含的特性、實(shí)體屬性、屬性標(biāo)簽;掌握實(shí)體的配置;掌握界面的方法及使用;掌握界面方法的屬性配置、命令配置、界面呈現(xiàn)配置;了解實(shí)體的組成;了解界面的組成。01實(shí)體介紹思考題平臺框架定義的實(shí)體通用屬性包括哪些?實(shí)體介紹實(shí)體介紹1、實(shí)體通常會映射數(shù)據(jù)庫,所有新建實(shí)體類要建在服務(wù)端工程;2、實(shí)體類必須包含在對應(yīng)文件夾下;文件夾以“實(shí)體名+S”進(jìn)行命名;3、實(shí)體一定要包含命名空間,且命名空間要規(guī)范,一般為“對應(yīng)工程名+文件夾名”;4、實(shí)體一般定義為部分類,直接或間接繼承DataEntity;5、實(shí)體類繼承的父實(shí)體盡量不要包含子列表屬性,如果包含,子實(shí)體又沒有用new關(guān)鍵字覆蓋父實(shí)體屬性,BS生成界面會報(bào)錯;6、實(shí)體類中盡量只包含對應(yīng)的屬性,盡量不要去寫與業(yè)務(wù)邏輯相關(guān)的代碼;實(shí)體介紹實(shí)體介紹7、實(shí)體屬性包含一般屬性、引用屬性、列表屬性、只讀屬性和視圖屬性;默認(rèn)情況下一般屬性和引用屬性會映射生成數(shù)據(jù)庫表字段,其他的屬性不會。8、創(chuàng)建實(shí)體的屬性,我們只建業(yè)務(wù)相關(guān)的屬性,業(yè)務(wù)屬性不要和框架屬性命名沖突,框架定義的屬性包括:Id,CreateBy,CreateDate,InvOrgId,IsPhantom,SyncId,UpdateBy,UpdateDate;框架屬性對應(yīng)數(shù)據(jù)庫表字段如下:9、實(shí)體類中的實(shí)體配置以“類名+Config”進(jìn)行命名;02實(shí)體屬性一般屬性實(shí)體屬性:實(shí)體屬性是通過托管屬性進(jìn)行注冊的,托管屬性通過P<T>.Register()方法進(jìn)行注冊,T為所注冊的托管屬性的實(shí)體所有者(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和引用實(shí)體兩個屬性,必須在同一實(shí)體中成對定義,屬性類型為double。引用屬性需指定引用類型ReferenceType,一般引用為Normal,子實(shí)體引用父實(shí)體為Parent。#region

讀者管理與讀者分類的關(guān)系ReaderCat[Label("類別號")]public

static

readonlyIRefIdPropertyReaderCatIdProperty=P<ReaderMan>.RegisterRefId(e=>e.ReaderCatId,ReferenceType.Normal);///

<summary>///讀者管理與讀者分類的關(guān)系Id///

</summary>public

doubleReaderCatId{get{return(double)GetRefId(ReaderCatIdProperty);}set{SetRefId(ReaderCatIdProperty,value);}}///

<summary>///讀者管理與讀者分類的關(guān)系///

</summary>public

static

readonlyRefEntityProperty<ReaderCat>ReaderCatProperty=P<ReaderMan>.RegisterRef(e=>e.ReaderCat,ReaderCatIdProperty);///

<summary>///讀者管理與讀者分類的關(guān)系///

</summary>publicReaderCatReaderCat{get{returnGetRefEntity(ReaderCatProperty);}set{SetRefEntity(ReaderCatProperty,value);}}#endregion引用屬性引用Id引用實(shí)體引用類型,一般外鍵為Normal列表屬性列表屬性:子列表的屬性,一對多關(guān)系中,父實(shí)體包含子實(shí)體的列表。#region

圖書大類與小類的關(guān)系SmallBookCatList///

<summary>///圖書大類與小類的關(guān)系///

</summary>public

static

readonlyListProperty<EntityList<SmallBookCat>>SmallBookCatListProperty=P<BigBookCat>.RegisterList(e=>e.SmallBookCatList);///

<summary>///圖書大類與小類的關(guān)系///

</summary>publicEntityList<SmallBookCat>SmallBookCatList{get{return

this.GetLazyList(SmallBookCatListProperty);}}#endregion列表屬性只讀屬性只讀屬性:只讀屬性用于表示實(shí)體中的一個只讀的數(shù)據(jù)。只讀屬性主要為界面展現(xiàn)層設(shè)計(jì)。#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只讀屬性視圖屬性視圖屬性:視圖屬性是通過引用屬性懶加載的數(shù)據(jù),主要為界面展現(xiàn)層設(shè)計(jì)。如果實(shí)體和繼承的父實(shí)體中沒有引用屬性,則不能使用視圖屬性。#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視圖屬性通過引用實(shí)體.屬性名加載出來視圖屬性的內(nèi)容思考題實(shí)體的一般屬性支持哪些類型?03實(shí)體屬性特性實(shí)體屬性特性屬性名稱標(biāo)簽(Label):用于在實(shí)體屬性上聲明屬性的顯示名稱。必填標(biāo)簽(Required):聲明實(shí)體屬性不能為空,字符串類型屬性會標(biāo)記該特性。非重復(fù)標(biāo)簽(NotDuplicate):聲明實(shí)體屬性不能重復(fù)。最大長度標(biāo)簽(MaxLength):聲明實(shí)體屬性的最大長度,字符串類型的屬性會標(biāo)記該特性。最小長度標(biāo)簽(MinLength):聲明實(shí)體屬性的最小長度,字符串類型的屬性會標(biāo)記該特性。最大值標(biāo)簽(MaxValue):聲明實(shí)體屬性的最大值,數(shù)值類型的屬性會標(biāo)記該特性。最小值標(biāo)簽(MinValue):聲明實(shí)體屬性的最小值,數(shù)值類型的屬性會標(biāo)記該特性。屬性默認(rèn)值(DefaultValue):屬性默認(rèn)值設(shè)置,作用域?yàn)楫?dāng)前實(shí)體。實(shí)體屬性特性04實(shí)體特性實(shí)體特性實(shí)體類型特性(RootEntity,ChildEntity,QueryEntity):用于在實(shí)體上聲明實(shí)體的類型。實(shí)體序列化特性(Serializable):用于在實(shí)體上聲明實(shí)體可序列化。實(shí)體名稱特性(Label):用于在實(shí)體上聲明實(shí)體的顯示名稱。實(shí)體成員顯示特性(DisplayMember):用于在實(shí)體上聲明實(shí)體被引用時顯示哪個屬性的值,注意顯示的成員必須是普通屬性,且必須是數(shù)據(jù)庫表中存在字段對應(yīng)的屬性。實(shí)體通用查詢特性(CriteriaQuery):用于在實(shí)體上聲明實(shí)體的查詢使用通過查詢條件,CriteriaQuery后面不關(guān)聯(lián)類則使用的是框架標(biāo)準(zhǔn)查詢,關(guān)聯(lián)類即CriteriaQuery(typeof(類)),則查詢自己實(shí)現(xiàn)。實(shí)體特性實(shí)體特性實(shí)體查詢特性(ConditionQueryType):用于在實(shí)體上聲明實(shí)體使用的查詢實(shí)體類型(注意:實(shí)體查詢標(biāo)簽與實(shí)體通用查詢標(biāo)簽只能標(biāo)記其中的一個)。下拉列表查詢條件特性(QueryMembers):用于在實(shí)體上聲明實(shí)體被引用時下拉列表的查詢條件配置。實(shí)體配置項(xiàng)特性(EntityWithConfig):用于在實(shí)體上聲明實(shí)體通用配置值。單據(jù)打印特性(BillPrintable):用于在實(shí)體上聲明界面單據(jù)打印命令的配置。實(shí)體特性05實(shí)體配置思考題實(shí)體元數(shù)據(jù)配置支持哪些配置?實(shí)體配置實(shí)體配置包括“實(shí)體規(guī)則配置”和“實(shí)體元數(shù)據(jù)配置”。實(shí)體規(guī)則:重寫AddValidations方法,這里配置的是標(biāo)準(zhǔn)規(guī)則,標(biāo)準(zhǔn)規(guī)則不能在界面進(jìn)行啟用和禁用操作,代碼編寫即生效,建議在項(xiàng)目上如果沒有特殊的要求可以使用該規(guī)則進(jìn)行實(shí)現(xiàn)(可以減少實(shí)體元數(shù)據(jù)的更新操作)??梢詫?shí)現(xiàn)的標(biāo)準(zhǔn)規(guī)則驗(yàn)證:1、非空驗(yàn)證;2、長度驗(yàn)證;3、最大最小值驗(yàn)證;4、非重復(fù)驗(yàn)證(支持單個和多個屬性的非重復(fù)驗(yàn)證);5、正則表達(dá)式的驗(yàn)證;6、實(shí)體驗(yàn)證(HandlerRule),該驗(yàn)證中可以查數(shù)據(jù)庫進(jìn)行驗(yàn)證操作。實(shí)體配置實(shí)體元數(shù)據(jù)配置實(shí)體元數(shù)據(jù)的配置,可以映射表、映射視圖、映射屬性和實(shí)體插件。映射數(shù)據(jù)庫表:Meta.MapTable(“RES_EMP_GROUP”);映射視圖1)直接讀取數(shù)據(jù)庫的視圖: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查詢的視圖,注意查詢中不能出現(xiàn)當(dāng)前實(shí)體,否則會出現(xiàn)死循環(huán)。映射表和視圖實(shí)體元數(shù)據(jù)配置映射實(shí)體中的所有屬性為數(shù)據(jù)庫表字段:Meta.MapAllProperties();映射指定的屬性及屬性長度:

Meta.Property(Employee.CodeProperty).MapColumn().HasLength(50);Meta.Property(Employee.CodeProperty).MapColumn().DataTypeLength=“50";排除某些字段不映射數(shù)據(jù)庫的設(shè)置:

Meta.MapAllPropertiesExcept(Employee.CodeProperty);指定某個字段不映射數(shù)據(jù)庫:DontMapColumn;

Meta.Property(Employee.CodeProperty).DontMapColumn();建立唯一索引,使用HasIndex。

Meta.Property(Resource.KeyProperty).MapColumn().HasIndex(IndexTypeMeta.UniqueIndexed);建立組合索引:使用IndexGroupOnProperties設(shè)置。

Meta.IndexGroupOnProperties(Resource.CultureIdProperty,Resource.KeyProperty);忽略映射外鍵:IgnoreFK;

Meta.Property(SupplierShipBill.MasterBillIdProperty).ColumnMeta.IgnoreFK();映射屬性實(shí)體元數(shù)據(jù)配置啟用假刪除:Meta.EnablePhantoms();禁用假刪除:Meta.DisablePhantoms();啟用庫存組織:Meta.EnableInvOrg();

禁用庫存組織:Meta.DisableInvOrg();啟用實(shí)體排序:Meta.EnableSort();

禁用實(shí)體排序:Meta.DisableSort();啟用樹形插件:Meta.SupportTree();啟用實(shí)體編輯日志記錄插件:Meta.EnableEntityLog();啟用數(shù)據(jù)同步插件:Meta.EnableDataSync();啟用實(shí)體鑒別器:Meta.EnableDiscriminator("PersonAttachment");實(shí)體插件06視圖介紹視圖介紹視圖:界面呈現(xiàn)的開發(fā)實(shí)現(xiàn),包括界面布局,編輯器,按鈕等相關(guān)界面操作。界面視圖命名規(guī)范:實(shí)體類名+ViewConfig,繼承:WebViewConfig<T>;T為對應(yīng)的實(shí)體名稱;界面視圖只能建在客戶端工程。視圖配置的方法:1、配置視圖:ConfigView,界面的入口,具體視圖的列和命令操作配置不要在該方法中進(jìn)行配置;2、列表視圖配置:ConfigListView;3、表單視圖配置:ConfigDetailsView,需要配置編輯模式為表單編輯(View.FormEdit())才會進(jìn)入,需要注意的是一定要先使用編輯模式,再使用默認(rèn)命令集,否則會出異常;4、查詢視圖配置:ConfigQueryView;查詢命令中不要使用默認(rèn)命令集,否則權(quán)限會多出一個view的權(quán)限配置;5、下拉視圖配置:ConfigSelectionView,下拉視圖中不用配置操作命令;6、導(dǎo)入視圖配置:ConfigImportView(),導(dǎo)入命令中不用配置命令;7、自定義視圖配置:使用默認(rèn)命令集(View.UseDefaultCommands())不生效,要把自定義分組添加到額外的分組(DeclareExtendViewGroup)里面,配置具體的列要加Show。視圖介紹07視圖配置思考題列表視圖配置可以做哪些配置?通用視圖ConfigView配置授權(quán)可信的實(shí)體:View.AssignAuthorize(typeof(實(shí)體名))定義額外的視圖,用于加載權(quán)限信息,生成授權(quán)界面:View.DeclareExtendViewGroup();判斷分組信息,執(zhí)行到具體的視圖方法配置;設(shè)置編輯模式,View.InlineEdit();或者View.FormEdit();如果菜單配置中沒有配置分組信息,編輯模式最好在ConfigListView中進(jìn)行配置;ViewConfig配置列表視圖ConfigListView配置表格設(shè)置不使用分頁:View.WithoutPaging();使用編輯模式:View.InlineEdit();或者View.FormEdit();使用行為:View.AddBehavior("行為js的全名稱空間");使用默認(rèn)命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替換命令:View.ReplaceCommands(WebCommandNames.Delete,typeof(DeleteGoodCommand).FullName);清除所有命令:View.ClearCommands();ConfigListView配置列表視圖ConfigListView配置設(shè)置父子顯示比例,默認(rèn)1:1,設(shè)置其他的比例使用View.UseLayoutSize(0.4,0.6);設(shè)置子布局:View.UseChildrenAsHorizontal();View.UseChildrenGroupAsHorizontal();設(shè)置前端排序:View.UseClientOrder();設(shè)置屬性視圖元數(shù)據(jù):View.Property,View.ChildrenProperty和附加子屬性視圖元數(shù)據(jù);設(shè)置不允許編輯:View.DisableEditing();表格列分組的使用:using(View.DeclareBand(“test”));ConfigListView配置表單視圖ConfigDetailsView配置使用行為:View.AddBehavior("行為js的全名稱空間");設(shè)置顯示列數(shù):View.HasDetailColumnsCount(2);設(shè)置表單的寬度和高度:View.UseDetail(600,1000);設(shè)置界面不允許編輯:View.DisableEditing();使用默認(rèn)命令集:View.UseDefaultCommands();移除命令:View.RemoveCommands(WebCommandNames.Copy);使用命令:View.UseCommands(WebCommandNames.Save);替換命令:View.ReplaceCommands(WebCommandNames.Delete, typeof(DeleteGoodsManageCommand).FullName);清除所有命令:View.ClearCommands();設(shè)置父子顯示比例,默認(rèn)1:1:View.UseLayoutSize(0.4,0.6);設(shè)置屬性視圖元數(shù)據(jù):View.Property,View.ChildrenProperty和附加子屬性視圖元數(shù)據(jù);ConfigDetailsView配置選擇視圖、導(dǎo)入視圖、查詢視圖選擇和導(dǎo)入視圖選擇視圖和導(dǎo)入視圖只需要配置列屬性即可;選擇視圖的方法:ConfigSelectionView;導(dǎo)入視圖的方法:ConfigImportView;查詢視圖查詢視圖的方法:ConfigQueryView;查詢視圖的按鈕沒有控制操作權(quán)限,這一塊不需要設(shè)置操作命令,除非重寫對應(yīng)的命令;必須在實(shí)體中標(biāo)記CriteriaQuery或者是CriteriaQueryProvider特性才會進(jìn)入ConfigQueryView方法中;選擇、導(dǎo)入和查詢視圖08視圖屬性配置思考題視圖屬性包括哪些配置?屬性配置表格設(shè)置列寬:ShowInList(width:300);表單設(shè)置行和列:ShowInDetail(rowSpan:8,columnSpan:3);設(shè)置列顯示位置:View.Property(p=>p.Describe).HasOrderNo(4);只讀設(shè)置:View.Property(p=>p.Code).Readonly(p=>p.PropertyType!=ItemPropertyType.Catalog)聯(lián)動設(shè)置:使用Cascade進(jìn)行設(shè)置;屬性配置屬性配置表格凍結(jié)列設(shè)置:FixColumn();引用屬性使用自定義數(shù)據(jù)源: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>();});屬性配置屬性配置表單設(shè)置換行:BS表單設(shè)置換行需要在要設(shè)置換行的列的前一列設(shè)置對應(yīng)的列寬和列所占的寬度;如下圖希望工單另起一行,需要設(shè)置工單上面的一列占滿整行和這一列顯示的寬度;屬性配置屬性配置使用編輯器,具體查看編輯器的使用;默認(rèn)值的設(shè)置:View.Property(p=>p.Code).DefaultValue(設(shè)置的值);String屬性類型的默認(rèn)值設(shè)置: View.Property(p=>p.Name).DefaultValue(“Test”);枚舉默認(rèn)值的設(shè)置: View.Property(p=>p.Name).DefaultValue((int)ItemType.Product)設(shè)置當(dāng)前日期:View.Property(p=>p.Date).DefaultValue(System.DateTime.Today).UseDateEditor();設(shè)置當(dāng)前時間:View.Property(p=>p.DateTime).DefaultValue(DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")).UseDateTimeEditor();屬性配置屬性配置下拉列表默認(rèn)值設(shè)置:

請求后臺數(shù)據(jù)庫賦值:

View.Property(p=>p.EmpId).DefaultValue(RT.Service.Resolve<EmployeeController>().GetLoginUserEmployee())GetLoginUserEmployee方法在服務(wù)端控制器實(shí)現(xiàn),如下:public

virtual

SIE.Resources.Employee

GetLoginUserEmployee()

{

var

employee

=

RF.GetById<SIE.Resources.Employee>(RT.IdentityId);

return

employee;

}

屬性配置09知識擴(kuò)展知識擴(kuò)展后端獲取實(shí)體的操作狀態(tài):p.PersistenceStatus=PersistenceStatus.New; PersistenceStatus為當(dāng)前操作的狀態(tài),包括Unchanged、Modified、New、Deleted四種狀態(tài)。RF.Save(entity)會走框架的驗(yàn)證,保存比較慢,如果是新增批量保存且校驗(yàn)單獨(dú)處理了可以使用RF.BatchInsert(entity)效率會高很多。RF.Save(entity),會根據(jù)entity的實(shí)體狀態(tài)去操作數(shù)據(jù),如entity的實(shí)體狀態(tài)為新增,調(diào)用RF.Save就會執(zhí)行插入操作;如果entity的實(shí)體狀態(tài)為M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論