夥計們,有沒有辦法從MetadataWorkspace的存儲模型(SSDL)中提取只有存儲過程?如何從MetadataWorkspace中僅提取存儲過程?
目前,我使用下面的代碼從MetadataWorkspace提取存儲過程(我檢查了EdmFunction對象的BuiltInAttribute):
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屬性的值存在差異,但我不確定這是否是可靠的標準。
在此先感謝。
p.s:如果您認爲從工作區提取存儲過程有更明智的方法,請分享。
我認爲這可行(至少在第一眼)謝謝。 – regnauld