2012-07-02 2 views
1

엔티티 유형 이름을 esql 문의 결과 값으로 반환 할 수 있어야하는 시나리오가 있습니다.esql 쿼리에서 엔티티 유형 이름을 얻는 방법

문제는 이것입니다. MVC3 응용 프로그램에서 SelectList에 전달 된 결과를 반환하는 esql 문을 빌드하고 실행하는 일반 도우미가 있습니다.

텍스트 열은 모델의 속성에 추가 된 특성에서 가져온 식입니다.

예를 들어 드롭 다운에 사람 이름을 'Last'로 표시하려면 'it. [LastName] + ","+ it. [FirstName]'과 같은 표현식을 가진 속성을 추가하십시오.

SELECT it.[Id] AS Id, it.[LastName] + ", " + it.[FirstName] AS Name 
FROM OfType([AuditedObject], [User]) AS it 

TPT를 사용하여 EF4.3에서 추상 유형과 관련된 시나리오를 실행했습니다. 이 도우미 메서드를 사용하여 파생 된 엔티티를 열거해야합니다. 이 방법은 열거하고 우리가이 같은 기본 데이터하고자 할 때 잘 모든 파생 개체를 반환

SELECT it.[Id] AS Id, it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 

을하지만 우리는 각 엔티티는 어떤 종류의 표시하는 방법이 필요합니다. 이 의사 코드 비슷해 :

SELECT it.[Id] AS Id, it.GetType().Name + " - " + it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 

사람이 내가이 작업을 수행하는 방법에 대한 지식이 있습니까?

답변

0

이전에이 질문을 수정하고 깜박하지 않았습니다. 우리가 끝내는 해결책은 그다지 우아하지 않았지만 우리에게 필요한 모든 기능을 제공했습니다.

모델에 엔티티를 추가하여 루트 객체의 유형을 나타내는 단방향 연결로 연결했습니다. 그런 다음 t4 템플릿을 사용하여 새 테이블에 유형을 채우는 스크립트를 생성하고 SaveChanges()가 호출 될 때마다 설정되도록 비즈니스 로직을 추가했습니다.

이제 우리는이 작업을 수행 할 수 있습니다

SELECT it.[Id] AS Id, it.[EntityType].[Name] + " - " + it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 
관련 문제