【发布时间】:2022-08-18 17:26:59
【问题描述】:
我正在努力使用 Dapper 仅从视图中选择查询,该视图是从 sql developerper 手动创建的,并且在测试和生产中都可以正常工作。 但是当我在 Windows 服务器上发布应用程序时,我收到了这个错误:
ORA-01858: A non-numeric character was found where a numeric was expected
下面是我的班级定义:
public class rib_model_new
{
public int ID { get; set; }
public string CUST_AC_NO { get; set; }
public string AC_DESC { get; set; }
public string CUST_NO { get; set; }
public string AC_OPEN_DATE { get; set; }
public string CUSTOMER_PREFIX { get; set; }
public string E_MAIL { get; set; }
public string ACY_CURR_BALANCE { get; set; }
public string MOBILE_NUMBER { get; set; }
}
这是我使用 dapper 的代码:
var cmdDef = new CommandDefinition(\"select * from COMPTE_OPEN_NEW_2 where AC_OPEN_DATE=\'19-aug-22\'\",commandType: CommandType.Text, flags: CommandFlags.NoCache);
rib_models = await objconn.QueryAsync<rib_model_new>(cmdDef);
贝娄是我的视图定义:
CREATE OR REPLACE VIEW COMPTE_OPEN_NEW_2 AS SELECT c.customer_prefix, cust_ac_no,cust_no, ac_desc, AC_OPEN_DATE,acy_curr_balance, c.e_mail, c.mobile_number FROM FCUBSLIVE.STTM_CUST_ACCOUNT a,FCUBSLIVE.sttm_customer d, FCUBSLIVE.sttm_cust_personal c WHERE a.auth_stat = \'A\' and a.cust_no = d.customer_no and d.customer_no = c.customer_no AND a.record_stat = \'O\';
这是从我的代码运行的查询及其从 sql 开发人员的工作:
select * from COMPTE_OPEN_NEW_2 where ac_open_date=\'17-aug-22\'
从堆栈跟踪:
at OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution(Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException& exceptionForArrayBindDML, Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone)
at OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteReader(String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, OracleDataReaderImpl& rdrImpl, Int32 longFetchSize, Int64 clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64[] scnForExecution, Int64[]& scnFromExecution, OracleParameterCollection& bindByPositionParamColl, Boolean& bBindParamPresent, Int64& internalInitialLOBFS, Int64 internalInitialJSONFS, OracleException& exceptionForArrayBindDML, OracleConnection connection, IEnumerable`1 adrianParsedStmt, Boolean isDescribeOnly, Boolean isFromEF)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
--- End of stack trace from previous location ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Dapper.SqlMapper.<QueryAsync>d__33`1.MoveNext() in /_/Dapper/SqlMapper.Async.cs:line 418
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at CheckbookHangfire.Services.Services_Flexcube_Test.<GetAccountsCreated_new>d__18.MoveNext() in C:\\Users\\Administrator\\source\\repos\\CheckbookHangfire\\CheckbookHangfire\\Services\\Services_Flexcube_Test.cs:line 318
从这个 Trace 我试图理解这个错误:
at Dapper.SqlMapper.<QueryAsync>d__33`1.MoveNext() in /_/Dapper/SqlMapper.Async.cs:line 418
请问这是什么意思,dapper在这里做什么,他不能将结果映射到我的模型。 我的所有模型字段与查询结果列具有相同的名称。
有人可以帮忙吗?
此致...
-
您应该发布视图定义,包括列类型。还有你要绑定的 C# 类型的定义,以及你用来查询的代码行。错误本身看起来很清楚。但是我们需要看到所有事物的定义才能确定。
-
您好@mason,我已经更新了请求。
-
您仍然没有显示 C# 类定义或您用于使用 Dapper 查询的代码。
-
你好@mason我已经更新了请求请
标签: c# asp.net-core dapper