2010-05-19 4 views
1

미리 구조가 알려지지 않은 데이터베이스에서 LINQ to Entities를 사용하고 있습니다. 리플렉션을 사용하여 정보를 검색하고 이제는 모든 테이블 이름의 문자열 목록을 갖게되었습니다. LINQ를 사용하기 때문에 C# 클래스 (linqContext)에 캡슐화 된 데이터 소스가 있으며 각 테이블은 해당 클래스의 속성입니다.C# : 속성 식별자가 문자열로 알려진 경우 클래스 속성에 액세스

내가 원하는 것은 다음과 같습니다. 테이블 이름 목록에있는 문자열 중 하나가 "Employees"라고 가정합니다. 이것은 코드에서 알 수 있습니다. 다음을 원합니다 :

linqContext.Employees.DoSomethingHere(); 

이게 가능합니까? 모든 속성이 목록의 항목 일 뿐이라면 문자열을 인덱서로 사용할 수 있습니다. linqContext["Employees"]. 그러나,이 경우 :(

+0

리플렉션을 통해 필요한 엔터티 형식을 찾은 다음 DataContext 클래스의 GetTable 메서드를 사용할 수 있습니다. –

답변

2

.

EntityContainer container = context.MetadataWorkspace 
    .GetEntityContainer(context.DefaultContainerName, DataSpace.CSpace); 
var setNames = container.BaseEntitySets.Select(b =>b.Name); 

당신이 세트 이름이 있으면 당신이 할 수있는 g이 이미 이런 식으로 뭔가 정보를 가지고로 첫째로 나는이 정보를 얻기 위해 반사를 사용하지 것이다, 나는 ObjectContext는의의 MetadataWorkspace 속성을 사용합니다 등 특정 세트의 데이터는 다음과 같이 코드를 호출하면 그냥 유형을 전달하고 적절한을 다시 얻을 수 있도록

context.CreateQuery<T>("[" + entitySetName + "]"); 

실제로 사용하는 일반적인 저장소가 특정 유형과 일치하는 엔티티 집합의 컨테이너를 검색 수집.

0

사용 반사 DataContext.GetTable (유형) DataContext를의 명명 된 속성을 검색하거나, 엔티티 유형을 검색 한 후 전화를하지 않습니다.

관련 문제