2010-03-02 2 views
23

List<T>EntityCollection<T>으로 변환 또는 캐스트 하시겠습니까? 난 당신에 대한 List<T>EntityCollection<T> 엔티티 프레임 워크에서 사용되는 말을 가정 (웹 양식에서 예) 자식 개체의 컬렉션 '처음부터'목록 변환 또는 캐스팅 <t> to EntityCollection <T>

 Cannot implicitly convert type 
'System.Collections.Generic.List' to 
'System.Data.Objects.DataClasses.EntityCollection'

답변

28

을 만들려고 할 때

때때로 발생 . 후자는 완전히 다른 용도 (변경 추적을 담당)이고 List<T>을 상속하지 않으므로 직접 캐스트가 없습니다.

EntityCollection<T>을 새로 만들고 모든 목록 구성원을 추가 할 수 있습니다. Linq2Sql에서 사용하거나 당신은 내가 위에서 언급 한 것과 남겨 곳 있도록 오버로드 된 생성자의 EntitySet 않는

var entityCollection = new EntityCollection<TEntity>(); 
foreach (var item m in list) 
{ 
    entityCollection.Add(m); 
} 

불행하게도 EntityCollection<T>는 할당 작업을 지원하지 않습니다 둘. 한 줄에

+0

개체를 EntityCollection 또는 EntityReference에 추가 할 수 없습니다. ObjectContext에 첨부 된 객체는 소스 객체와 관련되지 않은 EntityCollection 또는 EntityReference에 추가 될 수 없습니다. 이 오류가 발생했습니다 – alice7

+0

이것은 질문 자체와는 관계가 없지만 특정 시나리오와 관련이 있습니다. 매우 설명적인 오류 메시지라고 생각하지 않습니까? –

+0

이것은 내 제안을 사용하면서 얻은 정확한 오류 메시지입니다. – alice7

14

:

list.ForEach(entityCollection.Add); 

확장 방법 :

public static EntityCollection<T> ToEntityCollection<T>(this List<T> list) where T : class 
{ 
    EntityCollection<T> entityCollection = new EntityCollection<T>(); 
    list.ForEach(entityCollection.Add); 
    return entityCollection; 
} 

사용 : 없음 LINQ가 필요하지

EntityCollection<ClassName> entityCollection = list.ToEntityCollection(); 
+4

하나의 더 짧은 줄에서,'list.ForEach (entityCollection.Add); – AakashM

0

. 그냥 the constructor

List<Entity> myList = new List<Entity>(); 
EntityCollection myCollection = new EntityCollection(myList); 
관련 문제