2009-06-12 2 views
2

이 질문은 다른 질문의 연장이지만 자체 스레드가 필요하다고 생각합니다. See Silverlight QuestionEntity Framework 및 RIA 서비스가있는 동적 데이터

호출 할 때마다 동적 데이터 집합 (다른 열/스키마)을 반환하는 저장 프로 시저 (SQL 2005)가 있습니다.

Silverlight 3.0에서 이것을 사용하고 싶습니다. 그래서 Entity Framework 및 RIA Services를 사용하여 연결해야합니다. 나는 또한 Bindable (Silverlight Grid)이어야하므로 속성 (그리드 제한)을 통해 이러한 동적 열을 액세스 할 수 있어야합니다. 어떤 아이디어?

답변

2

현재 출하되는 Entity Framework 버전에서 매핑 할 수있는 저장 프로 시저 유형은 엔터티 형식을 반환하는 유일한 유형입니다. 일반적으로 런타임에 Entity Framework 메타 데이터를 생성 할 수있는 것은 이론적으로 가능하지만 컴파일하기 전에 매핑이 일반적으로 수행됩니다.

따라서 몇 가지 선택 사항이 있습니다.

  1. 정의 된 스키마를 반환하지 않는 프로 시저를 사용한다는 전체적인 생각을 포기하십시오. 컴파일하기 전에 이러한 프로 시저를 맵핑 할 수 없습니다.
  2. 호출하기 전에 엔터티 형식을 프로 시저의 예상 출력 열에 매핑하려면 런타임에 EDMX를 동적으로 생성하십시오. Entity Framework의 현재 버전은 프로 시저가 반환하는 열에 약간 까다 롭습니다. MSDN에서 이에 대한 설명서를 찾을 수 있습니다.
  3. .NET 4.0에는 new features which allow you to inform the Entity Framework about your client schema at runtime without having to generate EDMX first이 있습니다. 일부 엔터티 형식을 프로 시저의 예상 출력 열에 매핑하기 위해 이러한 기능을 활용할 수 있습니다.
  4. .NET 4.0에서도 스칼라 값을 반환하는 procs가 지원 될 수 있습니다. 나는 이것이 사실인지 아닌지를 기억할 수 없다.
  5. 엔티티 연결에서 표준 데이터베이스 연결을 항상 가져 와서 정규 SqlCommands를 사용하여 직접 프로 시저를 실행할 수 있습니다. 유감스럽게도 이는 코드 데이터베이스 공급자에 따라 다르지만 문제에 대한 가장 간단한 해결책 일 수 있습니다. 사실, 그러한 프로 시저를 사용하는 것은 이미 데이터베이스 - 서버 - 특정 적입니다.
+1

한 덕분에 기사의 그의 시리즈에 그렇게 할 수있는 방법이 같은 WCF 서비스를 사용할 수 있습니다. .NET 4.0은 실제로 옵션이 아닙니다. # 1로 기울고 있지만 지금까지는 다른 옵션을 생각할 수 없습니다 (관련 질문 참조). # 5를 선택하면 속성을 통해 열을 사용할 수있게됩니다. Silverlight 데이터 격자 문서를 올바르게 이해하면 열만 속성에 바인딩 할 수 있습니다. –

0

당신은 당신의 SP를 accesing에 대한 WCF 웹 서비스 wraper를 사용하여 데이터 소스 브래드 에이 브람스가 RIA 서비스