2011-02-18 5 views
4

Entity Framework를 사용하여 SQL 테이블에 동적으로 액세스해야합니다. 나에게 계정 개체를 반환이 일부 "PREFIX"라는 필드, "캠페인 ID"및 계정에 대한 자세한 정보가 포함됩니다Entity Framework에서 SQL 테이블을 동적으로로드하는 중

var Account = DB.Accounts.SingleOrDefault(x => x.ID == 12345);이 이름을 가진 별도의 SQL 테이블에 저장됩니다 : 여기에 몇 가지 의사 코드는 PREFIX_CAMPAIGNID_MAIN의 대회. 난 아무데도 매핑되어 있지 않은 새로운 법인을 만들 생각 그래서

테이블을 모두 같은 필드가 동적으로과 같이, 그것을로드 :

var STA01_MAIN = new MyAccount(); // my "un-mapped" entity

DB.LoadTable('STA01_MAIN').LoadInto(STA01_MAIN);

I 이제 STA01_MAIN 계정에 대한 정보를 얻을 수 있습니다 : STA01_MAIN.AccountId.

내 질문은 : 어떻게 Entity Framework를 사용하여 이러한 테이블에 액세스합니까?

+0

맵핑하면 SQL로 직접 쿼리하거나 액세스하지 않습니다. 아담의 대답은 정확합니다. –

답변

3

내가 EF는 LoadTable 및 LoadInto 방법이 있다고 생각하지 않지만, ObjectOntext.ExecuteStoreQuery 당신이 찾고있는 무슨 수 있습니다 : 이것은 당신이 당신의 데이터베이스에 대해 임의의 쿼리를 실행하도록해야

http://msdn.microsoft.com/en-us/library/dd487208.aspx

하고, 그 결과를 사용자가 지정한 임의의 유형으로 매핑합니다 (EF에 매핑되지 않은 경우에도 해당).

대상 유형에 매핑하는 데 필요한 열을 제공하는 쿼리를 작성하고이 유형이 변경 될 때 해당 쿼리를 조정해야하는 것은 물론입니다. 여기

http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/44cf5582-63f8-4f81-8029-7b43469c028d/

당신이

로를 조회 한 후 EF의 상속 관계로 (동일한 열)이 테이블의 모든 매핑하고 생각 해 봤나 그 사용에 관한 몇 가지 추가 논의의 db.BaseTypes.OfType<SpecificType>().Where(/*.....*/);

+0

+1 정답. 이 상속 모델은 테이블 당 클래스 (TPC)라고합니다. –

+0

그게 내가 찾던 것, 감사합니다 아담! 나는 모든 테이블을 매핑 할 것이지만 그것들은 말 그대로 수천 가지입니다 (VS가 모든 것을로드하는 것을 기다리는 것은 재미 있습니다). – eth0

관련 문제