使用开源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

 

posted @ 2020-05-25 17:41  向萧  阅读(1155)  评论(0编辑  收藏  举报