это многократное отображение в заботе о dapper о порядке столбца sqlstr `s?

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» как splitOn. то c.CategoryName не будет назначено, поэтому я изменил порядок столбца:

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

на этот раз все в порядке.

я что-то неправильно понимаю, любая помощь будет в порядке.

спасибо.

Принятый ответ

На самом деле, я подозреваю, что вам нужно использовать "CategoryID" для разделения, а не "c.CategoryID" , так как результаты не видят псевдонимы ( c. ). Но, чтобы объяснить: функция «split on» разбивает горизонтальный набор результатов на несколько частей. Например, если у нас есть:

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
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему