zoukankan      html  css  js  c++  java
  • 使用开源ORM框架Sqlsugar项目时发现的Bug

    1、项目中使用的ORM是Sqlsugar。在使用.where(...).select(...)时发现一个问题

    如果select(x=>new A(){})。这样是没有问题的,但是如果类A中有个属性,其类型是B,就无法查询。查询报错信息是:Unknown column 'Title' in 'field list'。

    用EF试了下是课的

    例如:

       public class TestA
        {
            public string Name { get; set; }
    
            public TestB TB { get; set; }
        }
        public class TestB
        {
            public string Title { get; set; }
        }

    在select(x=>new A(){TB=....})时会出现上述错误。

    var temp = db.Queryable<StudentModel>().Select(x => new TestA()
                {
                    title = x.Name,
                    TB = new
                   TestB()
                    { Title = x.Name }
                }).FirstAsync();

    2、开始调试Sqlsugar的源码:写调试代码,一步步调试。 发现在AdoProvider中的方法GetDataReaderAsync里,生成的sql命令是这样的:

    SELECT  `Name` AS `title` , `Name` AS `Title` , `Title` AS `TestB.Title`  FROM `Student`    ORDER BY NOW()  LIMIT 0,1

    拿到Navicat上执行,结果如下:

     找到了问题所在。

    3、在github上提出issue:

    https://github.com/sunkaixuan/SqlSugar/issues/725

  • 相关阅读:
    day21继承
    day22
    面向对象
    常用模块
    模块
    迭代器
    【游记】2020-CSP
    【初赛解析】2021CSP-S初赛解析(不完全)
    【题解】AcWing 1390.通电围栏
    【题解】AcWing 1387.家的范围
  • 原文地址:https://www.cnblogs.com/dayang12525/p/12958165.html
Copyright © 2011-2022 走看看