2017-06-26 5 views
0

私は次の表を返しCTE指定:m_idsgp_idm_idが参加し、除去されなければならないために使用された結果データで無視する必要が列

m_ids |gp_id |id |m_id |id |type|id |type|qty|... 
------|------|---|-----|---|----|---|----|---|--- 

列を。データは、Dapperが列名のあいまいさを処理するcliend側に移動するため、問題はありません。

問題は、データから特定の列を削除する方法です。これは、ダッパーがエンティティを作成するために列の順序を調べるためです。
同じ名前がたくさんあるので、必要な列をすべて選択するだけではいけません。もし可能であれば、A LOTの列が必要です。

誰でも私を助けることができますか?
データの順序は保存する必要があり、最終的にそのようになっているはずです。

id |id |type|id |type|qty|... 
    ---|---|----|---|----|---|--- 

EDIT:データは次のようにやや見えること返すクエリ:

select 
    m1.*, 
    m2.* 
from 
    pairs p 
    inner join materials m1 on m1.id=p.id1 
    inner join materials m2 on m2.id=p.id2 
+1

元のクエリを表示しないで、私は答えを試みません。最も簡単な方法は、現在のクエリとエイリアスを必要な方法でサブクエリすることです。中間テーブルは同じエイリアスを持つ2つのカラムを持つことができないので、3回現れる 'id'は飛ばないでしょう。最初は別々にエイリアスしてから、一番外側のクエリで同じエイリアスを作成する必要があります。 –

+2

'm1。*'と 'm2。*'を選択する代わりに、最終結果セットに表示する列を選択し、必要に応じてエイリアスを追加します。 –

+0

@TimBiegeleisenありがとう、私はそれが行く方法かもしれないと思う。私は、実際に返されるデータ内の指定された名前を持つ列を実際に無視または削除する方法があるかどうかを知りたかっただけです。 –

答えて

0

1行に複数のエンティティを返すとき、Dapperはカラムidをデリミタとして使用するので、すべての余分なカラムがエンティティの終わりのどこかに配置されていることを確認することです。だから私はこのような順序でこれらの列を配置します:

id |id |type|m_ids |gp_id |m_id |id |type|qty|... 
---|---|----|------|------|-----|---|----|---|... 
関連する問題