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