shuxinqin / Chloe

A lightweight and high-performance Object/Relational Mapping(ORM) library for .NET --C#
https://github.com/shuxinqin/Chloe/wiki
MIT License
1.52k stars 457 forks source link

生成SQL代码优化 #272

Closed yangzhinong closed 2 years ago

yangzhinong commented 3 years ago

花了一天跟代码,总算实现了。 生成SQL结果如图: image

下面是大概的实现。 image image image image

shuxinqin commented 3 years ago

为啥有这样的需求?

yangzhinong commented 3 years ago

方便调试,易于阅读。复杂的查询orm 语法更是如此,想知道生成的sql 是否正确。

nodyang commented 3 years ago

哈哈 要不赋值真的很麻烦。。这样挺好的

yangzhinong commented 3 years ago

今天又花两个小时,把JoinQuery根据连接的Lambda表达式的参数,作为别名. 改好了。 现在这样写: image 就能生成下面的SQL语句了。 image

改动的主要地止是Joinquery`.cs类的构造函数: image

image

shuxinqin commented 2 years ago

手动狗头

shuxinqin commented 2 years ago

强行使用Lambda表达式的参数作为别名,那么所有的相关参数名必须都一致,还能像下面那样用么? q.Where(a =>a.xxx..).Where(b => ...) 注意,第一个Where 用的是 a,第二个Where里用的是b

yangzhinong commented 2 years ago

我是这样实现的, 如果只有一个表的查询,我用的是as, 如果是多表连接,是在多表的取连接表达式的参数。 image 多表时,如前面的截图所示。 目前使用来看没有什么问题。

shuxinqin commented 2 years ago

呃...那还行,你们喜欢就好. 手动狗头