2011-02-22 3 views
3

Guys는 만 메타 데이터 워크 스페이스의 SSDL (저장 모델)에서 저장 프로 시저를 추출 할 수 있습니까? 현재MetadataWorkspace에서 저장 프로 시저 만 추출하는 방법은 무엇입니까?

, 나는 (내가 EdmFunction 개체의 BuiltInAttribute을 확인하고)에의 MetadataWorkspace에서 저장 프로 시저를 추출하기위한 다음 코드를 사용하고 있습니다 :

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 : 작업 영역에서 저장 프로 시저를 더 똑똑하게 추출하는 방법이 있다고 생각되면 공유하십시오.

답변

1

이 변형은 어떻게됩니까?

public static List<EdmFunction> TryGetSsdlFunctions(this MetadataWorkspace metadataWorkspace) { 
    List<EdmFunction> functions = (from func in metadataWorkspace.GetItems<EdmFunction>(DataSpace.SSpace)) 
           where func.ReturnParameter == null 
           select func).ToList(); 
    return functions; 
} 
+0

나는이 작품 (적어도 첫눈에) 감사한다고 생각합니다. – regnauld

0

나는 이것을 최근에 찾아야했습니다. IsComposable 특성은 EdmFunction이 저장 프로 시저인지 또는 사용자 정의 함수인지 확인하는 데 사용해야합니다.

EdmFunction.IsComposableAttribute 속성

가져 이때이 함수 또는 프로 시저로 매핑되는지 여부를 설정한다.

속성 값

유형 :

사실 선택 System.Boolean이 인스턴스가 함수에 매핑되는 경우; false이 인스턴스가 저장 프로 시저에 매핑 된 경우.

버전 정보

가능한 .NET 프레임 워크 4.5

https://msdn.microsoft.com/en-us/library/system.data.metadata.edm.edmfunction.iscomposableattribute(v=vs.110).aspx

(나는이 오래된 질문 알고 있지만, 구글의 상단 결과이기 때문에 대답을 찾고있을 때 다른 사람을 도울 것입니다.)