2011-07-01 1 views
1

이 같은 GetObjectByKey 기능을 사용하여 기록을 얻으려고 허용하지 않습니다 :엔티티 프레임 워크 - GetObjectByKey 기본 키

Enumerable<KeyValuePair<string, object>> entityKeyValues = 
       new KeyValuePair<string, object>[] { 
       new KeyValuePair<string, object>("JournalId", 
            new Guid("6491305f-91d9-4002-8c47-8ad1a870cb11")) }; 

EntityKey key = new System.Data.EntityKey(string.Format("{0}.{1}", ObjectContextManager.Current.DefaultContainerName, "Journal"), entityKeyValues); 

하지만 난이 예외를

System.ArgumentException를 얻을 수를 : 제공된 키 - 값 쌍 목록에 잘못된 항목 수가 있습니다. 'Namespace.Journal'유형에는 54 개의 키 필드 이 정의되어 있지만 1 개가 제공되었습니다. 매개 변수 이름 : 키

저널 유형은보기입니다.

어떻게해야 하나의 필드에 해당 함수를 사용할 수 있습니까? 내가 필요한 이유는 제네릭 형식을 지정하고 싶지 않기 때문입니다. 주어진 엔터티 집합 이름에서 해당 형식을 가져 오는 것이 하나뿐입니다. 사전에

감사 데이터베이스에

+0

"정의 된 54 개의 키 필드가 있습니다"모델을 확인하십시오. 그것은 전체 테이블이 키, 즉 모든 필드라고 생각하는 것 같습니다. –

+0

데이터베이스 뷰는 테이블이 아니기 때문에 그렇게 생각합니다. 그러나 다른 한편으로는 VIEW_METADATA WITH 뷰를 생성했습니다. – brittongr

답변

1

보기는 키가없는 있지만 EF는 모든 비 - 널 (NULL)이 아닌 바이너리 열을 취할 것 모델 EF에 뷰를 삽입 할 때 그래서 필요하고 그들을 정의 키 - 키가 54 개의 열로 구성된 순간. 솔루션은 수동으로 EDMX 파일을 XML로 수정하지만 기본 EDMX 디자이너를 사용하면 데이터베이스에서 업데이트 할 때마다 변경 사항이 삭제됩니다.

+0

테이블마다 데이터베이스보기가 모델에 추가 되었기 때문에 그 점이 저에게 큰 문제입니다. – brittongr