2009-06-12 7 views
2

지난 며칠 동안 EF를 사용했습니다. 우리의 응용 프로그램은 SQL Anywhere 10 데이터베이스를 기반으로하며 모든 데이터 액세스는 저장 프로 시저를 통해 수행됩니다. EF는 SA 10에서 지원되지 않으므로 SA 11을 사용하여 EF를 테스트하고 있습니다. 이 목적으로 2 개의 테이블과 2 개의 저장 프로 시저로 구성된 작은 데이터베이스를 만들었습니다 (asp.net mvc 샘플의 nerddinner 데이터베이스를 기반으로합니다. here 참조) 데이터베이스, 테이블 및 저장 프로 시저에서 모델을 만들고 필요한 함수 가져 오기를 수행했습니다. 나는 다음과 같은 서명이 저장 프로 시저가 있습니다Entity Framework + Sql Anywhere 11 + 저장 프로 시저

ALTER PROCEDURE "DBA"."get_dinner"(@dinner_id integer) 
BEGIN 
select dinner_id, title, event_date, description, hosted_by , contact_phone, address, country, latitude, longitude 
from dba.dinners d 
where d.dinner_id = @dinner_id 
END 

을 그리고 그 결과 기능 가져 오기 코드는 다음과 같습니다

public global::System.Data.Objects.ObjectResult<dinner> get_dinner(global::System.Data.Objects.ObjectParameter dinner_id) 
{ 
    return base.ExecuteFunction<dinner>("get_dinner", dinner_id); 
} 

을 그리고 그게 문제입니다. 이상적으로, 코드는 지금까지 내가 볼로 대신 global::System.Data.Objects.ObjectParameter dinner_id 의, int로 매개 변수를 받아 들여야 생성의 edmx 파일이 올바르게 매개 변수 유형을 해석하는 데 필요한 모든 데이터가 있습니다

<Function Name="get_dinner" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="DBA"> 
    <Parameter Name="dinner_id" Type="int" Mode="InOut" /> 
</Function> 

내가 여기서 뭔가를 놓치고 있습니까? 적절한 매개 변수 유형을 사용하여 함수 가져 오기를 수행하려면 무엇이 더 필요합니까? 이것은 edmx 파일을 수정하여 수정할 수있는 것이거나 SA11 EF 지원 구현의 문제입니다.

누군가가 내게 몇 가지 단서를 줄 수 있기를 바랍니다.

답변

1

이것은 함수 가져 오기에 대한 InOut 매개 변수 및 코드 gen의 알려진 문제점입니다. 우리는 INOUT 매개 변수를 만드는 방법에 대한 얘기를 한

은 다음과 같이 코드를 생성 : 당신이이

public ObjectResults<dinner> get_dinner(ref int dinner_id); 

보다는.

'InOut'에서 'In'매개 변수로 변환하는 것이 좋습니다. 코드 gen은 다음과 같이 생성해야합니다.

public ObjectResults<dinner> get_dinner(int dinner_id); 

진짜 질문은 전화해도 되나요?

희망이 배경

건배

알렉스 대답에 대한

+0

감사를하는 데 도움이됩니다. edmx 파일을 수정하고 작동 여부를 확인합니다. 현재 생성 된 함수 임포트가 작동합니다. 그것은 나를 귀찮게하는 매개 변수 유형 일뿐입니다. – Gio2k

+0

그것은 작동합니다. inout 매개 변수의 문제가 곧 해결 될 수 있기를 바랍니다. – Gio2k