我在使用Dapper时遇到了困难,只需要从一个视图中 Select 一个查询,该视图是从SQL Developper中手动创建的,在测试和生产中都能很好地工作. 但当我在Windows服务器上发布应用程序时,我收到以下错误:
ORA-01858: A non-numeric character was found where a numeric was expected
Bellow是我的类定义:
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);
Bellow是我的视图定义:
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';
这是从我的代码运行的查询IM,它是从SQL Developper运行的:
select * from COMPTE_OPEN_NEW_2 where ac_open_date='17-aug-22'
And finally this image show my view data types:
从堆栈跟踪:
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
从这个轨迹中,我试图理解这个错误:
at Dapper.SqlMapper.<QueryAsync>d__33`1.MoveNext() in /_/Dapper/SqlMapper.Async.cs:line 418
请问这是什么意思,达珀在这里做的是,他不能将结果映射到我的模型中. 所有My Models字段与查询结果列具有相同的名称.
有人能帮帮忙吗??
致以最诚挚的问候...