programing

엔티티 프레임워크 코어 - 테이크(1), 싱글(), 퍼스트()...Oracle 공급자와 함께 작동하지 않음(ORA-00933: SQL 명령이 제대로 종료되지 않음)

css3 2023. 7. 9. 12:35

엔티티 프레임워크 코어 - 테이크(1), 싱글(), 퍼스트()...Oracle 공급자와 함께 작동하지 않음(ORA-00933: SQL 명령이 제대로 종료되지 않음)

오라클 데이터베이스와 함께 efcore(2.2.4)를 사용하고 있습니다.

오라클 제공업체:오라클.엔티티 프레임워크 코어(2.18.0-베타3)

다음 코드:

IQueryable<KeyInfo> queryable = context
                .KeyInfos
                .Where(x => x.MobileNumber == "989191111111")
                .Take(1);

다음 DB 쿼리 생성:

SELECT "x"."ID", "x"."Key", "x"."MobileNumber", "x"."NationalCode"
FROM "KeyInfo" "x"
WHERE "x"."MobileNumber" = N'989191111111'
FETCH FIRST 1 ROWS ONLY;

쿼리 실행 중 다음 오류 표시:

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 4 Column: 1

그것을 고칠 방법이 있습니까? 올바른 방법은 첫 번째 줄을 얻는 것입니다.

안드로넘 = 1

것은 아니다.

처음 1행만 가져오기

및 .ToList()는 IQueryable에서 잘 작동합니다.

새로운 Oracle 데이터베이스를 지원하지 않는 오래된 Oracle 데이터베이스를 대상으로 하는 것 같습니다.FETCH FIRST N ROWS ONLYSQL 구성입니다.

나이를 먹기 위해서는ROWNUMSQL 변환 기반, 당신은 선택 사항을 활용해야 합니다.Action<OracleDbContextOptionsBuilder> oracleOptionsAction의 매개 변수.UseOracle방법과UseOracleSQLCompatibility값이 "11"인 확장 방법(현재 지원되는 값은 "11" 및 "12"뿐):

.UseOracle(connection_string, options => options
    .UseOracleSQLCompatibility("11"))

언급URL : https://stackoverflow.com/questions/56341445/entity-framework-core-take1-single-first-not-working-with-oracle-pr