2016-07-19 3 views
0

Oracle Dbに接続するパラメータを使用してサービスを作成しようとしていますが、複雑なクエリを実行し、その結果をJSON形式で返す必要があります。私はこれを助けるDapper ORMをチェックしていました。クエリが複雑であるためDapperクラスのプロパティ名と戻り値のデータ型C#

enter image description here

SELECT 
SICD_PRIO_CATEGORY_DESCR.DESCR, 
STRS_SESSION3.SESSION_NUM, 
Trunc(STRS_SESSION.START_DATE), 
STRS_SESSION3.START_DATE, 
STCD_ACT_DESCR4.DESCR AS DOSE_ACTIVITY, 
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) AS RESULT_WEEK 

だから他の質問に私は、列名は、クラスのプロパティデータ型と一致しなければならないことがわかりました。

public class StudyData 
{ 
public string DESCR, 
public string SESSION_NUM 
} 

戻り値の型は、すべての列の文字列か、特定の戻り値型である必要があります。また、DateTimeは、C#で日付データ型が表示されないため、両方の日付(18-DEC-12と18-DEC-12 07.52.25.977272000 AM -08:00など)を参照します。私はC#のプログラミングに新しいです、どんな助けも大いに評価されます

+0

問題はおそらくベストプラクティスにも反するパブリックフィールドです...それらをプロパティにする必要があります。 'public string DESCR {get;セット; } '。 –

+0

このクエリを1か所だけで使用しているのであれば、動的結果を使用して実際のDTOにマッピングすることをお勧めします。送信しているJSONオブジェクトに従う必要がある仕様はありますか? – konkked

+0

konkkedこれらはクエリの一部です。クエリtatの実行がより複雑です。 JSONオブジェクトには仕様がありません.JSON形式でクエリ応答を取得できるかどうかを尋ねられました。 – trx

答えて

1

プロパティのデータ型は、列のデータ型と一致する必要があります。たとえば、intデータ型のIdカラムがある場合、クラスのプロパティはintデータ型でなければなりません。

public int Id{ get; set; } 

C#が日付データを保持している列のデータ型として日時を使用してくださいdatetimeデータ型を持っています。

public datetime createdDate { get; set; } 
あなたの場合

public class StudyData 
    { 
     public string DESCR { get; set; } 
     public string SESSION_NUM { get; set; } 
     public DateTime START_DATE { get; set; } 
     public int RESULT_WEEK { get; set; } 
    } 

これは、可能なクラスの青写真である可能性があります。それが役に立てば幸い。

+0

ありがとうございますSaket、私はそれがカラムのデータ型であることを理解しています、例えば 'Trunc(STRS_SESSION.START_DATE)、 STRS_SESSION.START_DATE'のような選択されたカラムは、テーブルのDateTimeのSTART_DATEフィールドを参照する2つのカラムです。 1つは結果を18-DEC-12、それ以外は18-DEC-12 07.52.25.977272000 AM -08:00と返すので、両方の列にDateTimeを付けますか? – trx

+0

@trxはい、どちらの列でもdatetimeとしてdatetimeを使用します。それは未回答として表示されませんので、マークしてください。 –

関連する問題