【问题标题】:How to Execute Stored Procedure ORACLE with EF Core 5?如何使用 EF Core 5 执行存储过程 ORACLE?
【发布时间】:2021-03-08 14:01:18
【问题描述】:

要尝试执行此方法,请启动此错误:

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 框架

【问题讨论】:

    标签: oracle stored-procedures asp.net-core-5.0


    【解决方案1】:

    你应该这样写:

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

    如果存储过程有参数:

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

    这里最重要的是两个分号;进入字符串查询。

    【讨论】:

      【解决方案2】:

      execute-stored-procedure-oracle-with-ef-core-5 不存在,存储过程适用于 micro-orm 库 (Dapper)。

      EF5 查询直接使用 SQL 调用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 2015-06-05
        • 1970-01-01
        • 2018-06-21
        • 2010-12-23
        • 1970-01-01
        相关资源
        最近更新 更多