Entity, EntryEntity, SubEntryEntity 這三個對象具有繼承關系:
Entity 是實體基類,用於定義各種實體的公共屬性;
EntryEntity 是單據體實體類,從Entity派生,增加了單據體的一些特性;
SubEntryEntity 是子單據體實體類,從EntryEntity派生,增加了子單據體的一些特性;
BusinessInfo.GetEntity()方法,返回的是Entity類型,此類已經包含了實體的ORM屬性定義,利用此類,完全就可以到單據數據包中獲取到數據,無需轉換為EntryEntity。
通常情況下,沒有Model時,可以使用Entity.DynamicProperty.GetValue(obj)方法,獲取單據體的DynamicObjectCollection;
單據轉換插件各事件中,生成的下推結果,為了方便插件取數,提供了另外一種方式獲取單據體行。
如下演示代碼,介紹了在單據轉換插件中,兩種獲取單據體行數據的方法:
//**********************************************
public override void AfterConvert(AfterConvertEventArgs e)
{
// 方法一:直接獲取生成的全部單據體行,不區分單據
// 此方法特別適用單據轉換插件,非常方便
ExtendedDataEntity[] allEntryRows = e.Result.FindByEntityKey("FEntity");
foreach (var entryRowDataEntity in allEntryRows)
{
DynamicObject row = entryRowDataEntity.DataEntity;
// TODO: xxxx
}
// 方法二:逐個單據循環,獲取其單據體行
// 此方法比較通用
Entity entity = e.TargetBusinessInfo.GetEntity("FEntity");
// 獲取生成的全部單據
ExtendedDataEntity[] billDataEntities = e.Result.FindByEntityKey("FBillHead");
// 對單據做循環,逐單讀取單據體
foreach (var billDataEntity in billDataEntities)
{
// 如下是比較通用的方法,利用entity讀取單據體
DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(
billDataEntity.DataEntity) as DynamicObjectCollection;
foreach (DynamicObject row in entryRows)
{
// TODO: xxxx
}
}
}
原貼地址 http://club.kisdee.com/forum.php?mod=viewthread&tid=967037&source=solr_search&word=ENTITY