假设我需要得到AOT objects
属于model
- 例如表对象
- 我需要
Tables
和Table Extensions
- 结果对象可以是
treeNode
或DictTable
问题:如何从模型中获取 AOT 对象...
- X++?
- T-SQL?
- C#代码?
谢谢。
例如:有一个型号名称
Fleet Management Extension
。我可以使用 Visual Studio 获取对象。如何从 x++、t-sql、c# 中获取这些对象?
我当前的 x++ 代码。太可怕了。
protected set getTableNamesFromModels()
{
boolean inModel(str modelDisplayName, str objname, System.Type type)
{
var models = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetModelsOfMetadataArtifact(objName, type);
var modelsEnumerator = models.getEnumerator();
while (modelsEnumerator.moveNext())
{
Microsoft.Dynamics.AX.Metadata.MetaModel.ModelInfo modelInfo = modelsEnumerator.Current;
if( ModelDisplayName == modelInfo.DisplayName )
{
return true;
}
}
return false;
}
set result = new set(Types::String);
var modelName = 'Fleet Management Extension';
var axTableType = new Microsoft.Dynamics.AX.Metadata.MetaModel.AxTable();
var axTableExtType = new Microsoft.Dynamics.AX.Metadata.MetaModel.AxTableExtension();
var t = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::TableNames(); // Why Enumerator?
while ( t.moveNext() )
{
var tname = t.get_current();
if ( inModel(ModelName, tname, axTableType.GetType()) )
{
result.add(tname);
continue;
}
var tExt = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::GetTableExtensionNames(tname); // Why collection?
var tExtEnum = tExt.GetEnumerator();
while( tExtEnum.moveNext() )
{
var tExtName = tExtEnum.Get_Current();
if ( inModel(ModelName, tExtName, axTableExtType.GetType()) )
{
result.add(tExtName);
continue;
}
}
}
return result;
}