当我尝试使用Entity Framework Core执行Oracle存储过程时,我遇到了这个异常:
“No mapping to a relational type can be found for the CLR type 'OracleParameter[]'”
我尝试了ExecuteSqlCommand和FromSQL方法,但两者都导致同样的异常。
以下是Oracle存储过程的代码:
“No mapping to a relational type can be found for the CLR type 'OracleParameter[]'”
我尝试了ExecuteSqlCommand和FromSQL方法,但两者都导致同样的异常。
以下是Oracle存储过程的代码:
CREATE OR REPLACE Procedure GET_DEPT_PROC (
p_ParentSiteId number,
P_SiteId number,P_LoggedUserId number, P_curParam OUT sys_REFCURSOR) as
Begin
OPEN curParam FOR
select 1 Id, 2 EntityAlmostOnRenewalTrans, 3 EntityVerifiedTrans, 4
EntityCompletedTrans, 5 EntityClosedTrans, 6 MyVerifiedTrans, 7
MyCreatedTrans, 8 MyDraftedTrans, 9 MyRejectedTrans FROM DUAL;
End;
C#方法执行此存储过程:
public virtual DashBoardData GetDashBoardData(short parentSiteId, short siteId, int loggedUserId)
{
var parameters = new OracleParameter[]
{
new OracleParameter("@p_ParentSiteId", parentSiteId),
new OracleParameter("@p_SiteId", siteId),
new OracleParameter("@p_LoggedUserId", loggedUserId),
new OracleParameter("@p_curParam", OracleDbType.RefCursor, ParameterDirection.Output)};
string sql = "EXEC GET_DEPT_PROC(@p_ParentSiteId,@p_SiteId,@p_LoggedUserId:@p_curParam);";
var res = XDB.FromSql<DashBoardData>(base.context, sql, parameters).ToList()[0];
}
public static IQueryable<TEntity> FromSql<TEntity>(DbContext EFContext,RawSqlString sql, IEnumerable<OracleParameter> op) where TEntity : class
{
return EFContext.Set<TEntity>().FromSql(sql, op);
}