2016-07-18 3 views
0

Я новичок в .NET и создаю веб-службы. У меня сложный запрос Oracle, который должен выполняться при вызове служб. Я просто даю образец запроса ниже.Dapper для создания веб-службы

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 (?) 

Я кулачок через используя Чудной, но мой вопрос, как Щеголеватый будет возвращать результат, когда услуга называется (возможно есть данные, возвращаемые в формате JSON) также создать класс POCO Я не являюсь конечно, если тип каждого элемента является выбором, может быть строкой, или нам нужно будет указать соответствующий тип данных. Мои вопросы могут быть глупыми, я новичок в этом и ищу какую-то помощь. Спасибо

ответ

1

Обычно вы делаете модель (класс с реквизитом), а затем получаете Dapper для ее заполнения. Затем вы можете установить свойства как строки, ints, независимо от ваших типов столбцов DB.

Например:

List<Customer> customers = (List<Customer>)conn.Query<Customer>("SELECT * FROM Customer"); 

В этом примере объект клиента является классом, а список клиентов является список объектов заказчика. Затем вы можете переписывать данные.

Вот пример того, что класс Customer может содержать:

public class Customer 
    { 
     public int CustomerId; 
     public string Username; 
     public string FirstName; 
     public string LastName; 
    } 

Затем можно сериализации в формат JSON с помощью:

string jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(customers); 

Надеется, что это помогает :)

+0

Благодаря Delosdos. Но разве мы не должны использовать get и set для этих столбцов? Как мы используем Dapper в нашем приложении, просто ссылаясь на них? – trx

+1

Dapper автоматически заполнит объект для вас, если имена столбцов DB соответствуют именам свойств класса. Таким образом, вы бы добавили «public string DESCR;» и "public string SESSION_NUM;" к вашему классу, например – Delosdos

+0

Спасибо Delosdos. Вы удивительны, но в столбце «Выбор» («TO_DATE» (TO_CHAR (STRS_SESSION3.END_DATE, «dd/mm/yyyy hh24: mi '),« dd/mm/yyyy hh24: mi »), вот несколько столбцов: - TO_DATE (TO_CHAR (ST_SESSION3.START_DATE, 'dd/mm/yyyy hh24: mi'), 'dd/mm/yyyy hh24: mi')) * 1440) 'Мне тоже нужно дать их одинаково – trx

Смежные вопросы