sqlstrの列の順序に関する大まかな配慮でマルチマッピングですか?

dapper orm

質問

例えば:

ここに私のポコスです:

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

私がsplitOnとして "c.CategoryID"を選択した場合。 c.CategoryNameは割り当てられません。したがって、列の順序を変更しました:

select p.ProductID, p.ProductName, c.CategoryID,  c.CategoryName, c.Description ...

今回はすべてが大丈夫です。

私は何か誤解しています、どんな助けもOKです。

どうも。

受け入れられた回答

実際には、結果がエイリアス( c. )を見ることができないので、 "c.CategoryID"ではなく、分割するために"CategoryID"を使用する必要があると思われます。しかし、説明するには、「スプリットオン」フィーチャは水平方向の結果セットを複数の部分に分割します。たとえば、次のような場合:

Id    A    B    Id    C    D   Id    E    F

私たちは"Id"を分割して、次に取得します。

Id    A    B         |      Id    C    D        |       Id    E    F

(「分割」は複数の異なる列名にすることができ、毎回同じものである必要はありません)

したがって、各水平パーティション内で - いいえ、順序は関係ありません。しかし、「分割された」列が、列( CategoryName )が間違ったパーティションで終わるように配置されている場合は 、それは重要です。この動作は、列名が一意である必要はないため、 CategoryName探すだけでは無関係である可能性があります。 正しいパーティション内の CategoryNameを探す必要があります。

あなたの特定の例では、列を移動するか、単純にCategoryName を分割名として使用します(基本的には、パーティション内の最初の列を知る必要があります)。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow