5

ASP.NET/MVC 3.0 VS2010 샘플에서 Entity Framework으로 작업하는 것이 처음입니다. 함수 가져 오기로 두 개의 저장 프로 시저를 가져 왔으며 그렇게함으로써 각각에 대해 복잡한 데이터 형식을 만들었습니다.복잡한 데이터 형식의 EF에서 저장 프로 시저 호출

나는 다음과 같은 C# 코드를 실행하려고 :

public ComplexDataType RunStoredProc() 
{ 
    var context = new DbEntities(); 
    int param1 = 370; 
    int param2 = -1; 
    string param3 = "Current"; 

    ComplexDataType result = new ComplexDataType; 
    result = context.StoredProc(param1, param2, param3); 
    return result; 
} 

을 그리고 오류 받고 있어요 :

Cannot implicitly convert data type 
    System.Data.Objects.ObjectResult(ComplexDataType) to 'ComplexDataType' 

내가 잘못하고있는 중이 야 무엇을? 저장 프로 시저의 결과를 복잡한 데이터 형식에 올바르게 저장하려면 어떻게합니까?

+0

은 매핑과 StoredProc 메소드를 보여줍니다. – Pawel

답변

1

보십시오이 변경이에

result = context.StoredProc(param1, param2, param3); 

:

result = (ComplexDataType) context.StoredProc(param1, param2, param3); 
+0

여기에서 같은 오류가 발생합니다. 그것은 복잡한 데이터 유형으로 캐스트 할 수 없습니다. 위와 동일한 오류가 계속 표시됩니다. 다른 아이디어? –

2

당신은 저장 프로 시저의 결과를 얻을 수 DbSet.SqlQuery 방법을 사용할 수 있습니다.

int param1=12; 
int param2=53; 
var results=context.ComplexDataTypes.SqlQuery. 
         ("dbo.YourSPNameHere @p0 @p1", param1,param2).Single(); 

이와 같은 컬렉션이 있다고 가정하면 DbContext 클래스가 정의됩니다.

public DbSet<ComplexDataType> ComplexDataTypes { set;get;} 

자세한 내용은 here입니다.

+0

프로젝트가 context.Database.SqlQuery를 인식하지 못하고 있지만 context.ExecuteStoreQuery에 대한 옵션을 제공합니다. 위의 구문과 동일한 명령을 사용하면 동일한 오류가 발생합니다. 암시 적으로 변환 할 수 없습니다. 다른 아이디어? –

+0

어떤 버전의 엔티티 프레임 워크를 사용하고 있습니까? 저장된 proc이 무언가를 반환하고 있습니까? – Shyju

+0

EF 4.0 사용; stored proc은 약 10 개의 열과 대개 5와 15 개의 행을 반환합니다. –