是关于sqlstr的列顺序的小巧玲珑的多映射?

dapper orm

例如:

这是我的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”作为sp​​litOn。然后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

(请注意,“split”可以是多个不同的列名;每次都不需要是相同的)

所以:在每个水平分区内 - 不,顺序无关紧要。但是:如果“split”列的位置使得列( CategoryName )最终出现在错误的分区中 ,那么是的,这很重要。列名不必是唯一的 - 因此它不能只查找CategoryName - 这可能是不相关的;它需要在正确的分区中查找CategoryName

在您的具体示例中:移动列,或者只使用CategoryName 作为拆分名称 (基本上,它只需要知道分区中的第一列)。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因