用于创建 Web 服务的 Dapper
Dapper for creating a Web Service
我不熟悉 .NET 和创建 Web 服务。我有一个复杂的 Oracle 查询,需要在调用服务时执行。我只是在下面给出查询示例。
SELECT
STCD_PRIO_CATEGORY_DESCR.DESCR,
STRS_SESSION3.SESSION_NUM,
Trunc(STRS_SESSION3.START_DATE),
STRS_SESSION3.START_DATE,
Trunc(STRS_SESSION3.END_DATE),
Round((TO_DATE (TO_CHAR (STRS_SESSION3.END_DATE, 'dd/mm/yyyy hh24:mi'),'dd/mm/yyyy hh24:mi') - TO_DATE (TO_CHAR (STRS_SESSION3.START_DATE, 'dd/mm/yyyy hh24:mi'),'dd/mm/yyyy hh24:mi'))*1440),
STCD_ACT_DESCR4.DESCR,
decode(( decode(sign(( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )),-1,'Y',0,'N','N') ), 'N', Decode (( STPR_OPTIONS.VALUEN ), '1', trunc((( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )-1) /7)+1, '0', trunc(( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )/7)), 'Y', (trunc((( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) ) +1)/ 7)-1) , -999),
DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - (
FROM
STPR_STD_ANML,
STPR_ANML,
STPR_OPTIONS,
STCD_ACT_DESCR STCD_ACT_DESCR4,
STCD_ACT_DESCR,
STCD_UNIT_DESCR,
STCD_UNIT_DESCR STCD_UNIT_DESCR2,
STCD_UNIT_DESCR STCD_UNIT_DESCR10,
STCD_ACT STCD_ACT4,
STCD_ACT,
WHERE
( STPR_STUDY.ID=STPR_STUDY_DET.STD_ID )
AND ( STPR_STUDY_DET.STD_TYPE_ID=STCD_STUDY_TYPE.ID )
AND ( STCD_STUDY_TYPE_DESCR.STUDY_TYPE_ID(+)=STCD_STUDY_TYPE.ID AND STCD_STUDY_TYPE_DESCR.LANG_ID(+) = 1 )
AND ( STPR_STUDY.ID=STPR_STD_SPECIES.STD_ID(+) )
AND ( STPR_STD_SPECIES.SPECIES_ID=STCD_SPECIES.ID(+) )
AND ( STPR_STD_SPECIES.STRAIN_ID=STCD_STRAIN.ID(+) )
AND ( STCD_SPECIES.ID=STCD_SPECIES_DESCR.SPECIES_ID(+) AND
STPR_STUDY.STD_REF IN (?)
我偶然发现使用 Dapper,但我的问题是 Dapper 如何在调用服务时 return 结果(可能 return 在 JSON 中编辑了数据格式)也创建 POCO class 我不确定每个元素的类型是否是 select 可以是字符串,或者我们需要提供适当的数据类型。我的问题可能很愚蠢,我是新手,正在寻求帮助。谢谢
你通常会制作一个模型(class 使用道具),然后让 Dapper 填充它。然后,您可以将属性设置为字符串、整数,以及与您的数据库列类型匹配的任何内容。
例如:
List<Customer> customers = (List<Customer>)conn.Query<Customer>("SELECT * FROM Customer");
在此示例中,客户对象是 class,客户列表是客户对象的列表。然后您可以递归访问数据。
以下是客户 class 可能包含的内容的示例:
public class Customer
{
public int CustomerId;
public string Username;
public string FirstName;
public string LastName;
}
然后您可以序列化为 JSON 使用:
string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(customers);
希望这对您有所帮助:)
我不熟悉 .NET 和创建 Web 服务。我有一个复杂的 Oracle 查询,需要在调用服务时执行。我只是在下面给出查询示例。
SELECT
STCD_PRIO_CATEGORY_DESCR.DESCR,
STRS_SESSION3.SESSION_NUM,
Trunc(STRS_SESSION3.START_DATE),
STRS_SESSION3.START_DATE,
Trunc(STRS_SESSION3.END_DATE),
Round((TO_DATE (TO_CHAR (STRS_SESSION3.END_DATE, 'dd/mm/yyyy hh24:mi'),'dd/mm/yyyy hh24:mi') - TO_DATE (TO_CHAR (STRS_SESSION3.START_DATE, 'dd/mm/yyyy hh24:mi'),'dd/mm/yyyy hh24:mi'))*1440),
STCD_ACT_DESCR4.DESCR,
decode(( decode(sign(( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )),-1,'Y',0,'N','N') ), 'N', Decode (( STPR_OPTIONS.VALUEN ), '1', trunc((( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )-1) /7)+1, '0', trunc(( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) )/7)), 'Y', (trunc((( DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )),-1,( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) ),( Trunc(ILRS_DOSE.RESULT_DATE) ) - ( trunc(STPR_STD_ANML.START_DATE) )+( STPR_OPTIONS.VALUEN )) ) +1)/ 7)-1) , -999),
DECODE(SIGN(( Trunc(ILRS_DOSE.RESULT_DATE) ) - (
FROM
STPR_STD_ANML,
STPR_ANML,
STPR_OPTIONS,
STCD_ACT_DESCR STCD_ACT_DESCR4,
STCD_ACT_DESCR,
STCD_UNIT_DESCR,
STCD_UNIT_DESCR STCD_UNIT_DESCR2,
STCD_UNIT_DESCR STCD_UNIT_DESCR10,
STCD_ACT STCD_ACT4,
STCD_ACT,
WHERE
( STPR_STUDY.ID=STPR_STUDY_DET.STD_ID )
AND ( STPR_STUDY_DET.STD_TYPE_ID=STCD_STUDY_TYPE.ID )
AND ( STCD_STUDY_TYPE_DESCR.STUDY_TYPE_ID(+)=STCD_STUDY_TYPE.ID AND STCD_STUDY_TYPE_DESCR.LANG_ID(+) = 1 )
AND ( STPR_STUDY.ID=STPR_STD_SPECIES.STD_ID(+) )
AND ( STPR_STD_SPECIES.SPECIES_ID=STCD_SPECIES.ID(+) )
AND ( STPR_STD_SPECIES.STRAIN_ID=STCD_STRAIN.ID(+) )
AND ( STCD_SPECIES.ID=STCD_SPECIES_DESCR.SPECIES_ID(+) AND
STPR_STUDY.STD_REF IN (?)
我偶然发现使用 Dapper,但我的问题是 Dapper 如何在调用服务时 return 结果(可能 return 在 JSON 中编辑了数据格式)也创建 POCO class 我不确定每个元素的类型是否是 select 可以是字符串,或者我们需要提供适当的数据类型。我的问题可能很愚蠢,我是新手,正在寻求帮助。谢谢
你通常会制作一个模型(class 使用道具),然后让 Dapper 填充它。然后,您可以将属性设置为字符串、整数,以及与您的数据库列类型匹配的任何内容。
例如:
List<Customer> customers = (List<Customer>)conn.Query<Customer>("SELECT * FROM Customer");
在此示例中,客户对象是 class,客户列表是客户对象的列表。然后您可以递归访问数据。
以下是客户 class 可能包含的内容的示例:
public class Customer
{
public int CustomerId;
public string Username;
public string FirstName;
public string LastName;
}
然后您可以序列化为 JSON 使用:
string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(customers);
希望这对您有所帮助:)