es el mapeo múltiple en el cuidado de la columna de sqlstr?

dapper orm

Pregunta

por ejemplo:

aquí está mi pocos:

public class product
{
    public int productid { set; get; }
    public category category { set; get; }
    public string productname { set; get; }
}

también la categoría:

public class category
{
    public int categoryid { set; get; }
    public string categoryname { set; get; }
    public string Description { set; get; }
}

y el sqlstr:

select p.ProductID, p.ProductName, c.CategoryName, c.CategoryID,  c.Description 
from Products p inner join Categories c 
on p.CategoryID=c.CategoryID

si elijo "c.CategoryID" como splitOn. entonces c.CategoryName no será asignado, así que cambié el orden de la columna:

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

esta vez todo está bien.

si no entiendo bien algo, cualquier ayuda estará bien.

Gracias.

Respuesta aceptada

En realidad, sospecho que necesitas usar "CategoryID" para dividir, no "c.CategoryID" , ya que los resultados no llegan a ver los alias ( c. ). Pero, para explicar: la función "dividir" divide un conjunto horizontal de resultados en varias partes. Por ejemplo, si tenemos:

Id    A    B    Id    C    D   Id    E    F

y nos separamos en "Id" , luego obtenemos:

Id    A    B         |      Id    C    D        |       Id    E    F

(Tenga en cuenta que la "división" puede ser múltiples nombres de columna diferentes, no tiene que ser lo mismo cada vez)

Entonces: dentro de cada partición horizontal, no, el orden no importa. Pero: si las columnas "divididas" están posicionadas de forma tal que una columna ( CategoryName ) termine en la partición incorrecta , entonces sí, eso importa. Este comportamiento es exigido por el hecho de que los nombres de columna no tienen que ser únicos , por lo que no pueden buscar CategoryName , que podrían no estar relacionados; necesita buscar CategoryName en la partición correcta .

En su ejemplo específico: mueva la columna, o simplemente use CategoryName como el nombre de división (básicamente, solo necesita saber la primera columna de la partición).



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow