2

例如:

这是我的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 ...

这次一切正常。

我是不是误会了什么,任何帮助都可以。

谢谢。

4

1 回答 1

2

实际上,我怀疑您需要使用"CategoryID"拆分,而不是拆分"c.CategoryID",因为结果看不到别名(c.)。但是,解释一下:“拆分”功能将一组水平结果划分为多个部分。例如,如果我们有:

Id    A    B    Id    C    D   Id    E    F

然后我们分裂"Id",然后我们得到:

Id    A    B         |      Id    C    D        |       Id    E    F

(注意“split”可以是多个不同的列名;不必每次都一样)

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

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

于 2013-06-05T06:51:29.883 回答