Как выполнить хранимую процедуру ORACLE с EF Core 5?

Чтобы попробовать выполнить этот метод, запустите эту ошибку:

Microsoft.EntityFrameworkCore.Database.Command[20102]
  Failed executing DbCommand (165ms) [Parameters=[], CommandType='Text', CommandTimeout='0']
  EXEC SYSTEM.CLIENTESLISTA

Microsoft.EntityFrameworkCore.Infrastructure[0]
  2021-03-08 10:19:14.220792 ThreadID:4   (ERROR)   OracleExecutionStrategy.ExecuteAsync() : 

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-00900: недопустимый оператор SQL

public class Query
{
    [UseDbContext(typeof(DataContext))]
    public IQueryable<Cliente> GetClientes([ScopedService] DataContext dataContext) 
    {

        //List<Cliente> list;
        string sql = "EXEC SYSTEM.CLIENTESLISTA";
   
        var cliente = dataContext.CLIENTE.FromSqlRaw(sql);

        return cliente;
        //return dataContext.CLIENTE;
    }

Библиотеки, использующие:

Горячий шоколад 11.0 Net Core 5 Framework


person AAI INGENIERIA    schedule 08.03.2021    source источник


Ответы (2)


execute-stored-procedure-oracle-with-ef-core-5 не существует, хранимые процедуры работают с библиотеками микроорганизмов (Dapper).

Запросы EF5 работают напрямую с вызовами SQL

person AAI INGENIERIA    schedule 22.03.2021

Вы должны написать это так:

string sql = "begin SYSTEM.CLIENTESLISTA(); end;";

Если хранимая процедура имеет параметры:

string sql = "begin SYSTEM.CLIENTESLISTA(:param1, :param2); end;";

Самым важным здесь являются две точки с запятой ; в строковом запросе.

person Glenn A. Pérez R.    schedule 01.07.2021