例如:
这是我的 pocos:
public class product
{
public int productid { set; get; }
public category category { set; get; }
public string productname { set; get; }
}
还有类别:
public class category
{
public int categoryid { set; get; }
public string categoryname { set; get; }
public string Description { set; get; }
}
和sqlstr:
select p.ProductID, p.ProductName, c.CategoryName, c.CategoryID, c.Description
from Products p inner join Categories c
on p.CategoryID=c.CategoryID
如果我选择“c.CategoryID”作为 splitOn。那么 c.CategoryName 将不会被分配,所以我改变了列的顺序:
select p.ProductID, p.ProductName, c.CategoryID, c.CategoryName, c.Description ...
这次一切正常了。
我是否误解了什么,任何帮助都可以。
谢谢。
最佳答案
实际上,我怀疑您需要使用 "CategoryID"
进行拆分,而不是 "c.CategoryID"
,因为结果看不到别名(c.
)。但是,解释一下:“拆分”功能将一组水平结果划分为多个部分。例如,如果我们有:
Id A B Id C D Id E F
我们根据“Id”
进行拆分,然后我们得到:
Id A B | Id C D | Id E F
(请注意,“拆分”可以是多个不同的列名称;不需要每次都相同)
所以:在每个水平分区内 - 不,顺序并不重要。但是:如果“拆分”列的位置使得列 (CategoryName
) 最终位于错误的分区中,那么是的,这很重要。这种行为是由于列名不必是唯一的这一事实所要求的 - 因此它不能只查找可能不相关的 CategoryName
;它需要在正确的分区中查找CategoryName
。
在您的具体示例中:移动列,或者简单地使用 CategoryName
作为拆分名称(基本上,它只需要知道分区中的第一列)。
关于orm - dapper 中的多重映射是否关心 sqlstr 的列顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930831/