Farseer

导航

获取最根级EDT类型名称

有时候需要修改某个扩展数据类型的属性,比如字段的长度等,这些属性只能在最根级的EDT类型上修改,所以需要找到最根级的EDT类型,这个小例子演示了如何根据当前表的字段获取其对应的最根级EDT类型。
//Return the top extendtypeid,If error,return ''
static ExtendedDataTypeName GetFinalExtendedType(TableId _tableId,FieldId _fieldId)
{
    SysDictField        dictField;
    SysDictType         dictType;
    ExtendedTypeId      tmpExtendTypeId;
    ExtendedTypeId      finalExtendTypeId;

    ExtendedTypeId  getNextExtendedTypeId(DictType _dictType)
    
{
        ;
        
if(_dictType.extend())
            
return _dictType.extend();
        
else
            
return 0;

    }

    ;

    
if(_tableId && _fieldId)
        dictField 
= new SysDictField(_tableId,_fieldId);
    
else
        
return '';

    dictType    
=   new SysDictType(dictField.typeId());

    
if(!dictType)
        
return '';
        
    finalExtendTypeId 
= dictType.id();

    
while(true)
    
{
        tmpExtendTypeId 
= getNextExtendedTypeId(dictType);

        
//if not '',find next extendTypeId
        if(tmpExtendTypeId)
        
{
            finalExtendTypeId   
=   tmpExtendTypeId;
            dictType            
=  new DictType(finalExtendTypeId);
        }

        
else
            
break;



    }


    
if(finalExtendTypeId)
        
return  new dictType(finalExtendTypeId).Name();
    
else
        
return '';

}

附件是测试用例。

posted on 2007-09-07 11:28  佛西亚  阅读(259)  评论(0编辑  收藏  举报