首页 / 知识
如何加载多对多LINQ查询?
2023-04-16 09:22:00

How to load Many to many LINQ query?我有以下(相当标准的)表结构:
假设我有以下记录:
换句话说,第一个帖子有两个标签,第二个帖子有一个标签,而第三个没有任何标签。 我想在一个查询中加载所有帖子及其标签,但无法找到合适的运算符组合。 我已经可以只加载带有标签的帖子,也可以加载多个标签时的重复帖子。 给定上面的数据库,我想在Post对象的collection属性中接收三个帖子及其标签(如果有)。 有可能吗? 谢谢 好极了!有效。 如果有人遇到相同的问题,这就是我所做的:
这仅执行两个查询并为每个帖子加载所有标签。 想法是获得一些值以将查询限制在我们需要的最后一个帖子(在这种情况下,PublishDateGmt列就足够了),然后用该值而不是Take()限制第二个查询。 感谢您的帮助sirrocco。 对不起。您提供的解决方案有效,但是我发现在使用Take(N)分页时,它会中断。我正在使用的完整方法如下:
注释了Take()方法后,它会生成与您发布的查询类似的查询,但是如果我再次添加Take(),它将生成1 + N x M个查询。 所以,我想我现在的问题是:Take()方法是否有替代方法可对记录进行分页? 谢谢 有点奇怪,因为
结果如下:
(我缩短了名称,并在选择项上添加了*)。 这样看来就可以了。 我知道这是一篇旧文章,但是我发现了一种仅执行一个查询的同时使用Take()的方法。诀窍是在嵌套查询中执行Take()。
在上面的查询中使用DataLoadOptions将在一个查询中为您提供前十个帖子,包括它们的关联标签。生成的SQL将是以下内容的简洁得多:
很抱歉,不行,Eager Loading将为每个帖子的每个标签执行一个额外的查询。 经过以下代码测试:
在示例数据库中,它将执行4个在生产中不可接受的查询。谁能建议其他解决方案? 谢谢 我已经在另一篇文章中回答了这个问题:关于渴望加载。在您的情况下,可能类似于:
尽管要小心-在将任何查询发送到数据库之前必须先设置DataLoadOptions-否则,将引发异常(不知道为什么在Linq2Sql中这样子-可能会在以后的版本中修复)。 |
最新内容
相关内容
linux设备加载命令行?
linux设备加载命令行?,设备,系统,信息,数字,首页,软件,密码,终端,文件,键盘,Linux如何进入纯命令行界面?打开linux系统,在linux的桌面的空白处linux命令行加载中文?
linux命令行加载中文?,名称,系统,不了,传播,网上,状态,管理,中文,终端,命令,Linux的终端命令行模式下如何显示中文?解决方法其实很简单的,即把xlinux查询url命令?
linux查询url命令?,系统,网址,工具,数据,网站,命令,传播,软件,地址,标准,linux在命令符界面如何浏览网页linux系统下命令行访问网页是curl命令linux启动加载命令行?
linux启动加载命令行?,服务,系统,数字,首页,终端,环境,命令,方法,脚本,文件,虚拟机中的linux怎么进入命令方式点击打开开始菜单里的终端。打开linux查询命令进程?
linux查询命令进程?,系统,名称,总量,情况,状态,进程,材料,工具,电脑,数据,怎么查看linux进程名称1、linux 下查看进程可以使用的命令:ps命令查linux命令导出表结构?
linux命令导出表结构?,工作,系统,信息,地址,网络,命令,目录,云南,数据,服务,linux常用的命令有哪些linux系统常用操作命令linux系统常用操作命查询linux内存命令?
查询linux内存命令?,系统,情况,信息,工具,电脑,状态,命令,内存,发行,总量,查看linux的cpu和内存1、要查看内存使用情况,可以使用free命令。Freelinux命令查询屏保?
linux命令查询屏保?,系统,工作,工具,信息,地址,图片,命令,目录,基础,电脑,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命令linux加载库的命令?
linux加载库的命令?,系统,地址,信息,设备,标准,服务,命令,名字,工具,首页,linux进入数据库命令连接到本机上的MYSQL,一般可以直接键入命令:mysqllinux链路查询命令?
linux链路查询命令?,系统,信息,工作,地址,命令,工具,时间,盘中,基础,名字,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命令linux查询文件夹命令?
linux查询文件夹命令?,系统,软件,电脑,命令,文件,文件夹,单位,第三,档案,数据,linux文件夹的大小命令?1、最简单的查看方法可以使用ls -ll、lslinux加载驱动命令6?
linux加载驱动命令6?,信息,名称,设备,系统,电脑,软件,材料,下来,命令,权限,linux有那些命令?怎样装驱动?输入命令。首先确认linux虚拟机系统支