2013-01-25 2 views
0

저는 Linq를 사용하여 데이터베이스에서 항목을 선택하고 Entity Framework에서 항목을 만듭니다. 또한 Entity Framework는 함수 가져 오기 마법사를 사용하여 복합 형식을 만들었습니다. Complex Types를 사용하여 질의를 반환 할 때마다 Complex Return Type으로 결과를 캐스팅하려고 할 때 null 값을 얻습니다.Linq Casting 복잡한 유형으로 반환 유형

private AWorksLTEntities db = new AWorksLTEntities(); 

public IQueryable<SelectAll_Result> SelectAllMethod() 
{ 
    var result = from p in db.Products 
       select p; 
    return result as IQueryable<SelectAll_Result>; 
} 

SelectAll_Result은 EntityFrameworks에 의해 생성 된 복합 형이고 캐스트가 작동하지 않고 내 메소드는 null를 돌려줍니다.

일반 엔티티를 사용하여 동일한 코드 값

을 반환하지
private AWorksLTEntities db = new AWorksLTEntities(); 
public Product SelectAllMethod() 
{ 
    var result = from p in db.Products 
       select p; 
    return result; 
} 

내 문제는이 예제는 매우 간단합니다 동안, 나는이를 만드는 오전 것은 내가 일하고 코드 생성기, 및 반환 유형을 사용하여 쿼리이다 확인하기가 어렵 기 때문에 표준 엔티티 반환 대신 엔티티 프레임 워크 함수 가져 오기에서 생성 된 복합 반환 유형을 사용할 수 있어야합니다.

아이디어가 있으십니까? 미리 감사드립니다.

+0

EF에서 생성 한'SelectAllMethod'는 있습니까? –

+0

아니, 내가 작업중인 T4 템플릿에 의해 생성됩니다. 저장 프로 시저로드를 파싱하고 메서드를 만드는 중입니다. 그것들은 즉석에서 생성되기 때문에 EF 엔티티를 코딩하는 것보다 복잡한 returntypes를 사용해야합니다. –

답변

2

캐스트 연산자는 한 클래스에서 다른 클래스로 변환하는 방법을 알지 못합니다.

public IQueryable<SelectAll_Result> SelectAllMethod() 
{ 
    var result = from p in db.Products 
       select new SelectAll_Result() { a = p.a, b = p.b, ... }; 
    return result; 
} 
+0

고맙습니다! "엔터티 또는 복합 유형 'SelectAll_Result'을 LINQ to Entities 쿼리에서 생성 할 수 없습니다. 그러나 적어도 반쪽입니다. –

+0

@LindaKeating EF LINQ 지원이 좋지 않습니다. SelectAll_Result를 단순하게 유지하십시오. 기본 ctor 및 쓰기 가능한 자동 속성이있는 "DTO"클래스입니다. – usr