내 프로그램에 Entity Framework 4 엔터티 모델이 있습니다. 아무 데나 12.0.1 데이터베이스가 GuidToPrefix
라고 내 SQL에서 정의한 저장 기능이있다 :Entity Framework 4의 저장 함수 사용 쿼리
<Function Name="GuidToPrefix" ReturnType="int" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="DBA">
<Parameter Name="ID" Type="uniqueidentifier" Mode="In" />
</Function>
것은이 될이 MSDN article의 지시에 따라
CREATE OR REPLACE FUNCTION GuidToPrefix(ID UNIQUEIDENTIFIER) RETURNS INT AS
BEGIN
RETURN CAST(CAST(ID AS BINARY(4)) AS INT)
END;
, 나는 내 EDMX에 기능을 추가 솔직히 말해서 데이터베이스에서 모델을 업데이트하고 마법사의 첫 번째 탭에있는 목록에서 함수를 선택했는지 확인합니다. 차이가 있는지 없는지는 모르겠지만 그 이유는 알 수 없습니다.
이 기사에 따르면이 함수의 정의를 C# 클래스에 추가해야합니다. 내 문제는 그것이 어떤 수업에 들어갈 지 말해주지 않는다. 나는 완전히 새로운 수업을 추가 하는가? 새 .CS 파일을 만들고 다음과 같이 수행합니까 :
또는이를 엔티티 클래스의 일부로 지정합니까?
partial MyEntities {
[EdmFunction("CarSystemModel.Store", "GuidToPrefix")]
public static int GuidToPrefix(Guid id) {
throw new NotSupportedException("Direct calls to GuidToPrefix are not supported.");
}
}
이 엔티티 모델이 사용되는 두 개의 프로젝트가 있습니다. 하나는 클래스 라이브러리이고 모델은 그 안에 정의되어 있습니다. 다른 하나는 다른 솔루션의 또 다른 클래스 라이브러리로서이를 사용하고 있습니다. 나는 위의 두 예제를 시도하고 두 번째 클래스 라이브러리에서 쿼리는 두 경우 모두 컴파일러에서이 오류가 발생
The name 'GuidToPrefix' does not exist in the current context
은 분명히 내가 바로 일을하고 있지 않다. 아무도 이것을 시도하고 작동하도록 했습니까?
실제로 정적 메서드를 두는 것은 중요하지 않지만 데이터 계층의 일부임을 전달하기 위해 컨텍스트에 넣을 것입니다. –
@GertArnold : 아니요. 이 예제는 혼란 스럽습니다. 최소한 예제 클래스에 넣는 것이 분명하지 않기 때문입니다. 그 개념이 내 머리를 통과하면, 그것은 간단했다. 그리고 저는 함수가 정적이어야한다는 것을 100 % 확신하지 못합니다. 컨텍스트의 인스턴스 메서드로 만들면 아마 작동 할 것입니다. 그러나, 나는 그것을 작동 시켰기 때문에, 나는 그것으로 놀지 않을 것이다. –