作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
b.Id == btb.Blog-6ren">
TableAlias
不适用于多个连接。
查询:
var q = Db.From<Blog>(Db.TableAlias("b"))
.LeftJoin<Blog, BlogToBlogCategory>((b,btb)=> b.Id == btb.BlogId, Db.TableAlias("btbc"))
.Join<BlogToBlogCategory, BlogCategory>((bt,bc)=>bt.BlogCategoryId == bc.Id, Db.TableAlias("cats"))
.GroupBy(x => x.Id);
.Select("b.*, json_agg(cats) as BlogCategoriesJson");
var results = Db.Select<BlogQueryResponse>(q);
生成此 SQL:
SELECT b.*, json_agg(cats) as BlogCategoriesJson
FROM "blog" "b" LEFT JOIN "blog_to_blog_category" "btbc" ON ("b"."id" = "btbc"."blog_id") INNER JOIN "blog_category" "cats" ON ("blog_to_blog_category"."blog_category_id" = "cats"."id")
GROUP BY "b"."id"
这会导致错误,因为它引用了
"blog_to_blog_category"
而不是
btbc
最佳答案
Db.TableAlias()
仅提供目标连接表的别名,您的内部连接没有指定用于源表的别名,因此它按预期引用完整的表名。
您可以使用 Sql.TableAlias()
在您的 LINQ 表达式中引用表别名,例如:
var q = Db.From<Blog>(Db.TableAlias("b"))
.LeftJoin<Blog, BlogToBlogCategory>((b,btb)=> b.Id == btb.BlogId, Db.TableAlias("btbc"))
.Join<BlogToBlogCategory, BlogCategory>((bt,bc)=>
Sql.TableAlias(bt.BlogCategoryId, "btbc") == bc.Id, Db.TableAlias("cats"))
.GroupBy(x => x.Id);
.Select("b.*, json_agg(cats) as BlogCategoriesJson");
关于servicestack - TableAlias 不适用于多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68122859/
TableAlias不适用于多个连接。 查询: var q = Db.From(Db.TableAlias("b")) .LeftJoin((b,btb)=> b.Id == btb.Blog
我被困在这个问题上,当然这很容易,但我在文档中找不到解决方案。 我有一些树结构和我必须使用“存在”子查询过滤的子 where 子句: current_node.children.as("childre
我是一名优秀的程序员,十分优秀!