2012-01-25 3 views
1

참고 : 데이터베이스 우선 메서드 및 DbContext와 함께 EF 4.2를 사용하고 있습니다. 이것은 이 아니며 코드입니다.DbContext 생성기 및 저장 프로 시저

DbContext t4 tempalate를 사용하여 Stored Proc 메서드를 생성하려고합니다. 그렇게하기 위해 내장 된 기능 (기본 ObjectContext에 매핑 됨)이있는 것처럼 보입니다. 그러나 어떤 이유로 그것들을 생성하는 것을 완고하게 거부합니다. 반환 형식 (단일 형식이 아닌 모델 형식)과 관련이 있을지 모르지만 확실하지 않습니다.

누군가가 말하기 전에. 예, DbContext는 Stored Procs를 지원하지 않습니다. t4 템플릿이 IObjectContextAdapter를 사용하여 ObjectContext로 변환하는 이유입니다. 이것은 기본 제공 기능입니다.

과거에는 메소드가 자동으로 생성되었습니다. 왜 지금이 아닌지 나는 모른다. 함수는 .edmx 파일에 나타납니다. 이 문제를 해결하는 방법에 대한 제안?

<Function Name="pInsertMemberPayment" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 
    <Parameter Name="xMemberID" Type="int" Mode="In" /> 
    <Parameter Name="xCardHolderName" Type="varchar" Mode="In" /> 
    <Parameter Name="xBillingAddress" Type="varchar" Mode="In" /> 
    <Parameter Name="xBillingCity" Type="varchar" Mode="In" /> 
    <Parameter Name="xBillingState" Type="char" Mode="In" /> 
    <Parameter Name="xBillingZip" Type="varchar" Mode="In" /> 
    <Parameter Name="xAccountNumber" Type="varchar" Mode="In" /> 
    <Parameter Name="xExpirationDate" Type="date" Mode="In" /> 
    <Parameter Name="xRowCreatedSYSUserID" Type="int" Mode="In" /> 
    <Parameter Name="xRowCreatedDateTime" Type="datetime2" Mode="In" /> 
    <Parameter Name="xRowModifiedSYSUserID" Type="int" Mode="In" /> 
    <Parameter Name="xRowModifiedDateTime" Type="datetime2" Mode="In" /> 
    <Parameter Name="xMemberPaymentID" Type="int" Mode="InOut" /> 
</Function> 

답변

3

샘플 함수는 SSDL에서 저장 프로 시저 정의를 보여 주지만 MSDL에서 CSDL 또는 함수 가져 오기 매핑에 함수 가져 오기를 표시하지 않습니다. 저장 프로 시저의 모델 브라우저에서 함수 가져 오기를 만들었습니까? 난 그냥 엔티티, 복잡한 형식, 스칼라 및 입력 및 출력 매개 변수를 사용하여 반환하는 10 개의 다른 프로 시저와 DbContext 생성기 템플릿을 테스트하고 그들 각각에 대한 컨텍스트 클래스에서 메서드를 생성 (하지만 그들은 수입 함수에 매핑해야했다).

+0

뭔가 빠져있는 것 같습니다. 데이터베이스에서 모델 업데이트 옵션을 사용하여 sproc을 가져 왔습니다. 그래서 그것들을 Function Imports에 매핑해야합니다. –

+0

예. 마법사를 통해 가져 오기 만하면 EDMX의 한 부분에 배치되지만 그 후에는 저장 프로 시저로 수행 할 작업을 EF에 알려야합니다. 엔티티에 대한 삽입, 업데이트, 삭제 작업에 매핑하거나 수동으로 함수 가져 오기를 만들 수 있습니다. 템플릿에 의해 처리됩니다. –

+0

자, 생성 할 수 있습니다. 하지만 출력 매개 변수를 반환 형식 int로 매핑하는 방법을 알아낼 수 없습니다. 아마도 열 정보 가져 오기를 클릭하면 도움이되지만 그것은 열을 반환하지 않는다고 말합니다 (결과 집합에 대한 것 같지 않습니다). 그것은 단지 하나의 출력 매개 변수입니다). –