Sto usando ef core (2.2.4) con il database Oracle
oracleProvider: Oracle.EntityFrameworkCore (2.18.0-beta3)
questo codice:
IQueryable<KeyInfo> queryable = context
.KeyInfos
.Where(x => x.MobileNumber == "989191111111")
.Take(1);
genera questa query db:
SELECT "x"."ID", "x"."Key", "x"."MobileNumber", "x"."NationalCode"
FROM "KeyInfo" "x"
WHERE "x"."MobileNumber" = N'989191111111'
FETCH FIRST 1 ROWS ONLY;
query in esecuzione mi dà questo errore:
ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 4 Column: 1
è un modo per risolverlo? il modo corretto è quello di ottenere la prima riga
AND rownum = 1
non
FETCH PRIMA SOLO 1 FILA
e .ToList () funziona perfettamente con IQueryable
Apparentemente stai prendendo di mira un vecchio database Oracle che non supporta il più recente costrutto SQL FETCH FIRST N ROWS ONLY
.
Al fine di ottenere il più vecchio ROWNUM
traduzione SQL base, si dovrebbe utilizzare l'opzione Action<OracleDbContextOptionsBuilder> oracleOptionsAction
parametro del UseOracle
metodo e UseOracleSQLCompatibility
metodo di estensione con valore "11" (i valori solo attualmente supportati sono "11" e "12"):
.UseOracle(connection_string, options => options
.UseOracleSQLCompatibility("11"))