【问题标题】:dapper join splitOn multi column keydapper join splitOn 多列键
【发布时间】:2019-03-11 17:34:53
【问题描述】:

我正在新公司工作,拥有庞大的数据库... 我正在尝试将 dapper 介绍为 orm...

我在两个表之间有一个关系 1-N,有多个 PK

我的查询类似于

SELECT * 
FROM testmag INNER JOIN movmag  ON 
movmag.code= testmag.code AND
 tm_type = mm_type 
 AND tm_year = mm_year
 AND tm_serie = mm_serie
 AND tm_documentNumber = mm_documentNumber

还有我的表类模型:

public class testMag
{
        [Key]
        [Column(Order = 0)]
        public string code{ get; set; }

        [Key]
        [Column(Order = 1)]
        public string tm_type { get; set; }

        [Key]
        [Column(Order = 2)]
        public short tm_year { get; set; }

        [Key]
        [Column(Order = 3)]
        public string tm_serie { get; set; }

        [Key]
        [Column(Order = 4)]
        public int tm_documentNumber { get; set; }

        ...
}

public class movMag
{
    [Key]
    [Column(Order = 0)]
    public string code { get; set; }

    [Key]
    [Column(Order = 1)]
    public string mm_type { get; set; }

    [Key]
    [Column(Order = 2)]
    public short mm_year { get; set; }

    [Key]
    [Column(Order = 3)]
    public string mm_serie { get; set; }

    [Key]
    [Column(Order = 4)]
    public int mm_documentNumber { get; set; }

    [Key]
    [Column(Order = 5)]
    public int mm_row { get; set; }

    ... 
}

我正在尝试这些简洁的查询,只有一个 splitOn 键和所有键

 string qJoin2 = "SELECT top 10 * FROM testmag INNER JOIN movmag  ON movmag.code= testmag.code AND tm_type = mm_type AND tm_year = mm_year  AND tm_serie = mm_serie  AND tm_documentNumber = mm_documentNumber  ";

            var res = connection.Query<movmag, testmag, Tuple<movmag, testmag>>(
                qJoin2,
                Tuple.Create,
                splitOn: "code,tm_type,tm_year,tm_serie,tm_documentNumber,code,mm_type,mm_year,mm_serie,mm_documentNumber,mm_row").ToList();


            var res2 = connection.Query<movmag, testmag, Tuple<movmag, testmag>>(
                qJoin2,
                Tuple.Create,
                splitOn: "code").ToList();

我哪里错了? 有人可以解释我!? 非常感谢

【问题讨论】:

    标签: dapper


    【解决方案1】:

    我在 dapper.query() 中更改了类型顺序 它适用于两者

      var res = connection.Query<testmag, movmag, Tuple<testmag, movmag>>(
                        qJoin2,
                        Tuple.Create,
                        splitOn: "codditt,tm_tipork,tm_anno,tm_serie,tm_numdoc,codditt,mm_tipork,mm_anno,mm_serie,mm_numdoc,mm_riga").ToList();
    
                var res2 = connection.Query<testmag, movmag, Tuple<testmag, movmag>>(
                    qJoin2,
                    Tuple.Create,
                    splitOn: "codditt").ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2015-04-13
      • 1970-01-01
      相关资源
      最近更新 更多