3

안녕하세요 여러분 EF4를 사용하면 작은 스 니펫을 사용하여 EDMX 함수 ("데이터베이스에서 모델 업데이트"및 목록의 저장 프로 시저 추가)를 linq 메서드에 매핑 할 수 있습니다 이LINQ (dbcontext 사용)에서 저장 프로 시저 호출

[EdmFunction("MYPROJECT.Store", "Foo")] 
public Decimal Foo(Int32 Id) 
{ 
    throw new NotSupportedException("Not direct access possible, use with E-SQL or LINQ"); 
} 

그러나 같은이 EF 4.1 내가 저장 프로 시저 코드 먼저 작동하지 않는 것을 볼 수

와 함께 작동하지 않는 것 같습니다. DbContext를 사용하고 있습니다. 정상적으로 수행 할 수 없습니까?

그렇다면 저장 프로 시저를 어떻게 작동시킬 수 있습니까?

+0

데이터베이스 우선 또는 모델 우선 방식을 사용하십시오. 불행히도, 그 유일한 옵션을 지금 것 같다 : - ( –

+0

질문 어쩌면 어리석은하지만, 나는 데이터베이스에서 edmx 만든 dbcontext 코드 생성을 추가합니다. 나는 데이터베이스를 먼저, 맞습니까? – eka808

+0

예,하지만 'DbContext'입니다 첫 번째 것은 코드 우선이므로 데이터베이스의 첫 번째 코드와 첫 번째 코드가 이상하게 섞여있는 것처럼 보입니다 ... –

답변

1

:-) 사전으로

감사의이 만 EDMX 관련 기능 및 EDMX없이 DbContext의 API의 첫 번째 코드/유창하게 API와 함께 사용할 수 없습니다. Btw. 가져온 저장 프로 시저 결과 함수 가져 오기 및 Linq 쿼리에서 호출 할 수 없기 때문에 SQL 함수 및 저장된 프로 시저 의미합니다. EdmFunction으로 표시된 메소드는 가져온 SQL 함수 및 모델 정의 함수를 나타냅니다.

예, SQL 함수는 가져 오기 마법사의 저장 프로 시저 분기 아래에 표시되지만 이는 EDMX 디자이너의 "기능"일뿐입니다.

데이터베이스 우선 DbContext API와 EDMX 파일을 사용하기 때문에 EdmFunction을 아무런 문제없이 사용할 수 있습니다. 방금 테스트 했어. 문제는 아마도 EdmFunction 속성으로 표시된 프록시 방법이 정적이 아니며 고정적이어야한다는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 같은 구조로 새 프로젝트를 만들려고했습니다 : 하나의 edmx 파일 (테이블로 업데이트 됨) SQL 서버 db에서 udf 함수), dbcontext 및 프록시 메서드를 udf 이름으로 정적으로 선언했다.이 메서드는 linq에서 호출 할 때 호출되는 프록시 메서드를 (예외가 발생합니다.) 시도하고 내 문제가 성공, 코드 조각을 줄 수 있습니까? 사전에 의해 감사합니다 :) – eka808

+0

그리고 무슨 예외가 있었나요? 또한 ObjectContext API를 사용하여 동일한 기능을 시도 했습니까? 내 업무용 노트북에는 코드가 없습니다. –

+0

나는 이것을 얻는다 : 새로운 NotSupportedException을 던지십시오 ("직접 접근 불가, E-SQL 또는 LINQ와 함께 사용"); 테스트하기 만하면 EdmFunction 라인이 제거되었으며이 모든 작업은 모든 작업에 적용됩니다. 그래, 난 objectcontext와 함께 노력하고 모두 괜찮 작동 – eka808