.net core 如何在NetCore中从SQL向Oracle DbContext传递参数 var list=db.SomeModels.FromSql(“从表1中选择id,其中rownum

.net core 如何在NetCore中从SQL向Oracle DbContext传递参数 var list=db.SomeModels.FromSql(“从表1中选择id,其中rownum,.net-core,oracle-manageddataaccess,.net Core,Oracle Manageddataaccess,给我 System.ArgumentException:'无效的参数绑定参数名称:r' 我错过了什么。找不到任何文档,请执行以下操作: var list = db.SomeModels.FromSql("select id from table1 where rownum < :r",10).ToList(); 不幸的是,像你一样,我还没有找到任何合适的文档。我会编辑答案,当我这样做 以下代码也可以使用(使用Oracle.ManagedDataAccess.Core v2.19.31和M

给我

System.ArgumentException:'无效的参数绑定参数名称:r'


我错过了什么。找不到任何文档,请执行以下操作:

var list = db.SomeModels.FromSql("select id from table1 where rownum < :r",10).ToList();
不幸的是,像你一样,我还没有找到任何合适的文档。我会编辑答案,当我这样做

以下代码也可以使用(使用Oracle.ManagedDataAccess.Core v2.19.31和Microsoft.EntityFrameworkCore v2.2.6进行测试):

var list=db.SomeModels
.FromSql(“从表1中选择id,其中rownum<{0}”,10)
托利斯先生()

您进行了自我测试吗?@Toolkit抱歉,在EF core中考虑得太多了。已更新答案以使用Oracle.ManagedDataAccess.Core和Microsoft.EntityFrameworkCore。仍然在寻找关于使用参数和使用oracle的ef核心驱动程序的FromSql的实际文档。@Toolkit plus这次通过实际测试进行了双重检查
var row = new OracleParameter("r", OracleDbType.Int32);
row.Value = 10;

var list = db.SomeModels
    .FromSql("select id from table1 where rownum < :r", new object[] { row })
    .ToList();
var row = new OracleParameter("r", OracleDbType.Int32);
row.Value = 10;

var nameParameter = new OracleParameter("name", OracleDbType.Varchar2);
nameParameter.Value = "John";

var list = db.SomeModels
    .FromSql("select id from table1 where rownum < :r and firstname = :name", new object[] { row, nameParameter })
    .ToList();
var list = db.SomeModels
    .FromSql("select id from table1 where rownum < {0}", 10)
    .ToList()