1

저장 프로 시저 집합과 함께 기존 데이터베이스가 있습니다. 데이터베이스 개체를 변경하지 않고 응용 프로그램 계층을 다시 디자인하고 있습니다. 내가 직면 한 어려움 중 하나는 동일한 테이블을 쿼리하지만 열의 다른 조합을 반환한다는 점에서 서로 비슷하게 많은 저장 프로 시저가 있다는 것입니다.저장 프로 시저에서 익명 형식 반환

부분적으로 채워진 엔터티를 반환 할 수 없으며 Entity Framework 4.1 (및 SQL Server 2008 R2)을 사용하여 저장 프로 시저에서 익명 형식을 반환 할 수있는 방법을 찾을 수 없습니다. 이로 인해 기본 테이블 구조는 동일하지만 저장 프로 시저마다 너무 많은 복합 형식을 정의해야합니다.

내 질문은 :

  1. 엔티티 EF를 사용하여 구현 될 수있다/복합 유형의 수를 최소화하기위한 데이터베이스 객체를 변경하지 않고 솔루션을 제안 해주십시오.

  2. 또한 부분 채워진 항목을 반환 할 수 있습니까? 이렇게하면 엔티티를 다시 사용할 수 있습니다. 객체 추적 기능을 사용할 계획이 아닙니다.

  3. 저장 프로 시저 출력에서 ​​익명 형식을 반환하려면 어떻게해야합니까? 이것은 대부분의 경우 내가 JSON 형식으로 클라이언트에

감사

답변

2

을 데이터를 반환하기 위하여려고하고있다 당신은 익명 형식을 반환 할 수 없습니다 때문에 충분히 나를 위해도 좋다 - 사람들은 일반적으로 제한된다 내부에 정의 된 메소드의 범위에 적용됩니다. 부분적으로 채워진 유형을 반환

당 수 자체가되지 않습니다 -하지만 당신은이 작업을 수행 할 수 있습니다 :

데이터베이스 계층에서
  • , 문제의 저장 프로 시저를 호출; 그것의 "서명"
  • 같은 것을 사용하여 복잡한 유형의 반환 된 필드를 귀하의 시스템의 엔티티로 쉽게 복사 할 수 있으므로 "부분적으로 채워진"엔터티를 얻을 수있는 특정 복합 유형을 반환합니다.
  • 데이터베이스 계층에서 해당 응용 프로그램을 사용할 응용 프로그램으로 반환하십시오.

저장 프로 시저의 반환 값을 얻기 위해 복잡한 형식을 많이 사용하는 것을 피할 수는 없지만 데이터베이스 레이어 내부에 잠긴 채로두면 전체 애플리케이션에 누출되지 않습니다.

+0

데이터 크기가 작은 곳에서이 작업을 수행했습니다. 그러나 SP에서 반환 한 대용량 데이터 세트의 경우 매핑 프레임 워크를 사용하여 뷰 모델 또는 도메인 객체를 만드는 데 많은 비용이 소요됩니다. 익명의 유형을 반환 할 수 없음을 확인해 주셔서 감사합니다. – ideafountain

0

좋은 옛날처럼 System.Data.DataTable을 사용하십시오.

+1

주석에 기재해야합니다. –

관련 문제