.NET Chloe.ORM v2.10 简化多表连接查询
so_while 2017年06月19日

.NET Chloe.ORM v2.10 简化多表连接查询

so_while so_while 发布于2017年06月19日 收藏 10 评论 5

【腾讯云】云上实验室:开发者零门槛,免费使用真机在线实验!>>>  

Chloe.ORM:一款高质量的.Net C#数据库访问框架(ORM)。支持SqlServer、MySql、Oracle及SQLite,实体为纯POCO,支持基本数据类映射的同时也支持枚举类型。查询接口借鉴linq,支持lambda表达式,高效便捷开发。借助lambda表达式,完全用面向对象的方式就能轻松执行多表连接查询、分组查询、聚合查询、插入数据、批量删除和更新满足条件的数据等操作,开发容错率极高。

更新内容:

  • 增加更易用的多表连接查询接口 DbContext.JoinQuery

  • 修改连续调用 Skip 方法时生成错误的 sql 语句 bug,如 IQuery.Skip(10).Skip(5)

API文档:http://www.52chloe.com/Wiki/Document

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:.NET Chloe.ORM v2.10 简化多表连接查询
分享
评论(5)
精彩评论
1

引用来自“eechen”的评论

查询指定标签下的文章,并按post_id降序排序(自增编号post_id反映了post的创建时间):
$sql = '
SELECT post.id, post.title
FROM post_tag, post
WHERE post_tag.post_id = post.id
AND post_tag.tag_id = 1
ORDER BY post_tag.post_id DESC
LIMIT 20 OFFSET 0
';
$rows = $db->query($sql)->fetchAll();
好奇ORM是怎么简化SQL多表连接的,是否能够结合上面这个很常见的多表逻辑来说明.

另外,数据量大时,多表连接的开销很大,ORM是否应该提供一种外部(如Redis)的缓存机制来优化查询.
比如:标签1下的文章的第1页
key: tag_1_posts
value: list(post_1, post_2)
Redis可以用lrange操作list实现分页.
dbContext.JoinQuery<post_tag,post>((post_tag,post) => new object[]
{
JoinType.InnerJoin, post_tag.post_id = post.id && post_tag.tag_id = 1
})
.Select((post_tag,post) => new { post_tag,post })
.OrderbyDesc(a=>a.post_tag.post_id )
.TakePage(1,20)
1
查询指定标签下的文章,并按post_id降序排序(自增编号post_id反映了post的创建时间):
$sql = '
SELECT post.id, post.title
FROM post_tag, post
WHERE post_tag.post_id = post.id
AND post_tag.tag_id = 1
ORDER BY post_tag.post_id DESC
LIMIT 20 OFFSET 0
';
$rows = $db->query($sql)->fetchAll();
好奇ORM是怎么简化SQL多表连接的,是否能够结合上面这个很常见的多表逻辑来说明.

另外,数据量大时,多表连接的开销很大,ORM是否应该提供一种外部(如Redis)的缓存机制来优化查询.
比如:标签1下的文章的第1页
key: tag_1_posts
value: list(post_1, post_2)
Redis可以用lrange操作list实现分页.
最新评论
0
0
1

引用来自“eechen”的评论

查询指定标签下的文章,并按post_id降序排序(自增编号post_id反映了post的创建时间):
$sql = '
SELECT post.id, post.title
FROM post_tag, post
WHERE post_tag.post_id = post.id
AND post_tag.tag_id = 1
ORDER BY post_tag.post_id DESC
LIMIT 20 OFFSET 0
';
$rows = $db->query($sql)->fetchAll();
好奇ORM是怎么简化SQL多表连接的,是否能够结合上面这个很常见的多表逻辑来说明.

另外,数据量大时,多表连接的开销很大,ORM是否应该提供一种外部(如Redis)的缓存机制来优化查询.
比如:标签1下的文章的第1页
key: tag_1_posts
value: list(post_1, post_2)
Redis可以用lrange操作list实现分页.
dbContext.JoinQuery<post_tag,post>((post_tag,post) => new object[]
{
JoinType.InnerJoin, post_tag.post_id = post.id && post_tag.tag_id = 1
})
.Select((post_tag,post) => new { post_tag,post })
.OrderbyDesc(a=>a.post_tag.post_id )
.TakePage(1,20)
0

引用来自“eechen”的评论

查询指定标签下的文章,并按post_id降序排序(自增编号post_id反映了post的创建时间):
$sql = '
SELECT post.id, post.title
FROM post_tag, post
WHERE post_tag.post_id = post.id
AND post_tag.tag_id = 1
ORDER BY post_tag.post_id DESC
LIMIT 20 OFFSET 0
';
$rows = $db->query($sql)->fetchAll();
好奇ORM是怎么简化SQL多表连接的,是否能够结合上面这个很常见的多表逻辑来说明.

另外,数据量大时,多表连接的开销很大,ORM是否应该提供一种外部(如Redis)的缓存机制来优化查询.
比如:标签1下的文章的第1页
key: tag_1_posts
value: list(post_1, post_2)
Redis可以用lrange操作list实现分页.
这个 @eechen 就是个笑话,天天要喊着吊打,结果现在挂在树上惨遭吊打,屁都不敢放一个,又一个神棍被拉下神坛 --via FalconChen . 有链接有真相: https://www.oschina.net/question/253880_2236467
1
查询指定标签下的文章,并按post_id降序排序(自增编号post_id反映了post的创建时间):
$sql = '
SELECT post.id, post.title
FROM post_tag, post
WHERE post_tag.post_id = post.id
AND post_tag.tag_id = 1
ORDER BY post_tag.post_id DESC
LIMIT 20 OFFSET 0
';
$rows = $db->query($sql)->fetchAll();
好奇ORM是怎么简化SQL多表连接的,是否能够结合上面这个很常见的多表逻辑来说明.

另外,数据量大时,多表连接的开销很大,ORM是否应该提供一种外部(如Redis)的缓存机制来优化查询.
比如:标签1下的文章的第1页
key: tag_1_posts
value: list(post_1, post_2)
Redis可以用lrange操作list实现分页.

相关资讯

最新资讯
热门资讯
顶部