2009-12-28 3 views
4

따라서 Entity 개체 컬렉션을 모눈 구성 요소에 바인딩하면 그리드는 출처의 SQL 테이블에있는 순차적 순서로 해당 필드를 표시합니다. 이것은 필드의 서수 위치가 어떻게 든 해당 엔티티 속성과 연관되어 있음을 보여줍니다.열 시퀀스 및 엔터티 프레임 워크

여기에 질문 : Entity Framework 엔터티의 속성을 반영하여 테이블 필드 서수 위치를 얻으려면 어떻게해야합니까?

내가 아는 것과 시도한 것을 말해 줄께. 분명히 EF 엔터티의 각 데이터 필드 속성은 System.Runtime.Serialization.DataMemberAttribute로 장식되어 있습니다. 이 특성에는 Order 속성이있는 것으로 보입니다. 그러나, 나는이 속성이 내가 찾고있는 것을 포함하지 않는다는 것을 발견했다. 엔티티의 모든 데이터 등록 정보 값은 -1 인 것 같습니다. 어떤 순서인지는 순서 상 순위가 아닙니다.

아무도이 문제를 다루지 않은 사람이 있습니까?

답변

2

관계형 데이터 특성에는 순서 나 서수가 없습니다. 테이블의 열은 순서가 없으며 서수 (실제 구현 어시스트)도 없습니다. 결과 집합 열 위치는 쿼리의 예상 목록을 기반으로 특정 쿼리에 해당하며 응용 프로그램은 요청한 프로젝션 목록을 알고 있기 때문에 항상 서수를 알고 있습니다.

그리드에서 특정 순서로 열을 표시하려면 원하는 순서대로 표시하십시오. 개발 당시 알지 못했던 임의 (ad-hoc) 질의를 위해 실제 스토리지에서 열 서수를 검색하려면 일부 스토리지 특정 메커니즘을 사용하여 직접 물리적 스토리지를 상호 해석하십시오. 예를 들어 저장소가 SQL Server 인 경우 sys.columns을 볼 수 있습니다.

+2

("테이블의 열은 순서가없고 서수도 없다") 관계형 이론에서는 true이고, 존재하는 거의 모든 SQL DB에서는 false입니다. 대부분의 SQL DB에는 열 순서 기능이 있습니다. –

+0

SQL Server 2012에는 서문을 지원하는'SEQUENCE' 열이 있습니다 (실제로는 이론적으로는 아닙니다). – Mrchief

+0

원하는대로 재정렬 할 수 있기 때문에 거짓이 아닙니다. – TomTom

0

질문을 한 지 오래되었지만 어쨌든 이것을 제시하겠다고 생각했습니다. 최근에 EF 객체를 편집하고 주어진 유형과 관련된 속성을 반복하는 데 필요한 일반 클래스를 만들었습니다. 나는 당신이 달성하기 위해 노력하고 있었다 정확히 모르겠지만 여기에 내가 무엇을 가지고 :

  Dim Id as Integer = 1 
      pEditRecord = (From locs In BIPContext.AspNetUsers Where locs.Id = Id Select locs).FirstOrDefault() 

      Dim iProps = pEditRecord.GetType().GetProperties() 
      For z As Integer = 0 To iProps.Count - 1 
       Dim iColName = iProps(z).Name 
       Dim iVal = iProps(z).GetValue(pEditRecord) 
      Next 
+0

예. 권리. 이제 다시 - 그는 부동산 서수가 아닌 테이블 서수를 묻습니다. – TomTom

0

가 어떻게 엔티티 프레임 워크 엔티티의 속성을 통해 반영하여 테이블 필드 서수 위치를 얻을 수 있습니까?

음식을보고 요리사의 이름을 어떻게 확인할 수 있습니까?

수 없습니다.

당신은 EF 메타 데이터 - 클래스가 아니라 -를 물을 수 있습니다.하지만 메타 데이터는 데이터베이스의 필드와 다른 순서를 가질 수 있으므로 아무 것도 의미하지 않습니다.

데이터베이스의 필드를 원한다면 테이블 이름을 가져온 다음 INFORMATION_SCHEMA를 쿼리하고 거기에서 필드 서수를 가져옵니다 (물론 여기에 있습니다).하지만 엔티티 프레임 워크에서하는 모든 작업은 완전히 다른 순서를 가질 수 있습니다. 데이터베이스의 저장 영역.