【发布时间】:2020-10-17 11:48:37
【问题描述】:
我正在使用带有 EF Core 的 ASP.NET Core 3.1 和 DB2 AS400 数据库。我创建了一个看起来像这样的表值函数
CREATE FUNCTION ABELIBLE.TVFBOEGETSHIPMENTS (
STARTDATE DATE ,
ENDDATE DATE ,
ADDRESSCODE CHAR(9) )
RETURNS TABLE (
"ID" INTEGER ,
JOBNUMBER CHAR(9) ,
CUSTOMERREFERENCE CHAR(18) ,
CONSIGNEENAME CHAR(30) ,
CREATEDDATE DATE ,
AIRPORTOFORIGIN CHAR(3) ,
AIRPORTOFARRIVAL CHAR(3) ,
AIRPORTOFDESTINATION CHAR(3) ,
COUNTRYOFDESTINATION CHAR(3) ,
ADDRESSCODE CHAR(9) ,
CONSIGNMENTNUMBER CHAR(25) )
LANGUAGE SQL
SPECIFIC ABELIBLE.TVFBOEGETSHIPMENTS
NOT DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DECRESULT = (31, 31, 00) ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
RETURN
SELECT
ROW_NUMBER ( ) OVER ( ORDER BY EMJOBN DESC ) ,
A . EMJOBN ,
A . EMCREF ,
A . EMOSNM ,
DATE ( TIMESTAMP_FORMAT ( DIGITS ( A . EMCRTD ) , 'DDMMYY' ) ) ,
A . EMAOFO ,
A . EMAOFA ,
A . EMAOFD ,
A . EMCOFD ,
A . EMUKCD ,
A . EMRPRT
FROM DTALIBLE . EMASTER A WHERE A . EMPSFT = 'Y' AND A . EMUKCD = ADDRESSCODE AND
( DATE ( TIMESTAMP_FORMAT ( DIGITS ( A . EMCRTD ) , 'DDMMYY' ) ) >= STARTDATE AND DATE ( TIMESTAMP_FORMAT ( DIGITS ( A . EMCRTD ) , 'DDMMYY' ) ) <= ENDDATE ) ;
我可以使用这个语句在 DBeaver 中得到这个函数的结果
SELECT * FROM TABLE(ABELIBLE.TVFBOEGETSHIPMENTS('2020-05-27', '2020-05-27','MUL0044'))
但是我无法从 EF Core 调用函数。我的调用代码如下所示:
非常感谢任何帮助。
【问题讨论】:
标签: c# sql entity-framework-core db2