orm - dapper 中的多重映射是否关心 sqlstr 的列顺序?

标签 orm dapper

例如:

这是我的 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.)。但是,解释一下:“拆分”功能将一组水平结果划分为多个部分。例如,如果我们有:

Id    A    B    Id    C    D   Id    E    F

我们根据“Id”进行拆分,然后我们得到:

Id    A    B         |      Id    C    D        |       Id    E    F

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

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

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

关于orm - dapper 中的多重映射是否关心 sqlstr 的列顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930831/

相关文章:

django - 在 Django 中,在多对多关系中至少强制执行一个值?

c# - 为什么这个小巧的查询返回 null?

c# - MySql.Data.MySqlClient.MySqlException (0x80004005) : SELECT command denied to user 'XXX' @'YYY' for table 'bogus_table'

c# - Dapper 与 MS Access 更新和插入问题

android - 使用 greenDao android ORM 库创建多个 *.db 文件

java - Hibernate:如何维护插入顺序

c# - 没有字母参数的 Postgresql 的 Dapper 存储过程

c# - 使用 Dapper QueryAsync 返回单个对象

java - 使用 Guice hibernate 5 个实体监听器

node.js - 为什么在 Node 中插入数据后没有正确响应?