Ребята, есть ли способ извлечь только хранимых процедур из модели хранилища (SSDL) MetadataWorkspace?
В настоящее время я использую следующий код для извлечения хранимых процедуриз MetadataWorkspace (я проверяю BuiltInAttribute объекта EdmFunction):
public static List<EdmFunction> TryGetSsdlFunctions( this MetadataWorkspace metadataWorkspace )
{
List<EdmFunction> functions = new List<EdmFunction>();
foreach ( EdmFunction function in metadataWorkspace.GetItems<EdmFunction>( DataSpace.SSpace ) )
{
MetadataProperty builtInAttribute = function.MetadataProperties.FirstOrDefault( p => p.Name == "BuiltInAttribute" );
if ( builtInAttribute != null && Convert.ToBoolean( builtInAttribute.Value.ToString() ) == false )
{
functions.Add( function );
}
}
return functions;
}
Проблема здесь в том, что кроме хранимых процедур это вернет все функции , включенные в модель данныхтоже.И я хочу только хранимые процедуры.Я вижу, что существуют различия в значении атрибута IsComposable, но я не уверен, является ли это надежным критерием.
Заранее спасибо.
ps: Если вы считаете, что есть более разумный способдля извлечения хранимых процедур из рабочей области, пожалуйста, поделитесь.