2017-06-26 12 views
0

我有一个CTE是如下表返回:指定有在结果数据被忽略列

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

m_idsgp_idm_id被用于加入,必须除去。然后数据进入到Dapper将关注列名不明确的地方,所以这不是问题。

问题是如何从数据中删除某些列,因为为了创建实体,dapper将查看列的顺序。
我不能只是选择所有需要的列,因为有很多相同的名称(即使我可以,这可能是一个坏主意,因为有我需要的列的A LOT)。

任何人都可以帮助我吗?
数据的顺序都被保留了,并且最终它看起来应该是这样的:

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

编辑:返回的数据看起来有点像这样的查询:

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

没有看到您的原始查询,我不会尝试回答。最简单的方法是仅仅查询当前查询并以您想要的方式进行别名查询。请注意,中间表不能有两个具有相同别名的列,所以出现三次的'id'不会飞;您必须首先将它们分开别名,然后在最外面的查询中进行相同操作。 –

+2

而不是选择'm1。*'和'm2。*',只需选择想要出现在最终结果集中的列,并根据需要添加别名。 –

+0

@TimBiegeleisen谢谢,我认为这可能是要走的路。我只是想知道是否有一种方法可以在返回的数据中实际忽略或删除具有指定名称的列。 –

回答

0

事实证明,当在一行中返回多个实体时,Dapper使用id作为分隔符列,所以诀窍是确保所有过多的列都放在任何实体的末尾某处,并且Dapper将忽略它。所以我把这些列按照这样的顺序排列:

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