- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
petapoco 是否能够实现以下目标:1.一次查询无限制加入2.一次查询中无限的一对多关系
我看过 PetaPOCO,它似乎不能进行超过 4 个连接,最长的签名如下所示:db.Query
它似乎也支持一对多关系,但仅适用于一个复合对象,如下所示:db.FetchOneToMany
我正在测试一些微型 ORM,以坚持使用最好的 ORM。你知道他们中的任何一个可以处理这些情况吗?如果没有微型 ORM 支持这个功能,你如何处理如下所示的对象:
class A
{
List<B> member1;
List<C> member2;
Z member3; //Composit object
Z1 member4; //Composit object
Z2 member5; //Composit object
Z3 member6; //Composit object
Z4 member7; //Composit object
}
然后更复杂的是,如果成员一(类型 B)本身有一些复合对象怎么办?如果我们有:
class B
{
G member0;
}
请不要提出多次访问数据库的解决方案,因为当对象变得有点复杂时,调用次数会太多。
哦,我还知道另一种解决无限连接情况的方法是创建一个非常扁平的对象,将所有字段组合起来。这根本不是一个优雅的解决方案。
最佳答案
T1..T$ Query() 重载全部传递给主 Query(..Type[]..) 方法。您可以自己添加更多 Query() 重载以处理更多 T 参数,或者在 Type 数组中传入您需要的所有类型(这是 T1-T4 函数所做的):
Query<TRet>( new Type[]{typeof(Poco1), typeof(Poco2), typeof(Poco3), typeof(Poco4), typeof(Poco5)}, null, sql, args);
您可以拥有多个一对多关系,但 Schotime 是正确的,您需要非常小心结果集中返回的大量重复数据。写sql查询,看看结果集,重复量你能接受吗?如果是这样,那么在 Petapoco 中有一个 relator 回调的概念,您可以在其中编写一个小类来处理单个结果行中的不同 poco,并将每个 poco 添加到父 poco 的列表属性中。
我从来不需要用多个一对多的方式来做这个,但是从上面引用了
"If you're joining more than two tables you'll need something more complex but it's really just extensions of the above."
另一种选择是使用一个存储过程来完成单个数据库请求中的所有工作,并让它返回多个结果集,我相信 Schotime 在他的 petapoco 分支中已经实现了这一点,但我自己还没有使用过它,所以我不能真正评论它是否会在这里有所帮助:
http://schotime.net/blog/index.php/2011/11/20/petapoco-multiple-result-sets/
如果我绝对必须像您建议的那样为复杂和嵌套的对象一次性连接所有数据,那么我会使用存储过程(单个数据库调用)并将其全部拼接连同代码。只有这样我才能弄清楚如何在 Petapoco 中执行此操作。但是,如果在用户单击扩展按钮(或类似按钮)之前您的 UI 不显示所有嵌套数据,我会在此时使用 AJAX 调用,而不是一开始就获取所有数据。
关于c# - PetaPOCO 和超过 4 个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268519/
我使用这个 cmd 应用程序 https://github.com/tokland/youtube-upload 上传 50 个视频后,我收到此错误: [RequestError] Server re
尝试将 docker 容器提交到镜像时出现错误: [root@dockerregistry /]# docker commit da4180ab1536 dockerregistry:5000/myi
我只是想知道这样做会更好吗: if((fd = open(filename, O_RDWR)) == -1) { fprintf(stderr, "open [ %s ]\n", strerror(e
我在我的开发机器(单个笔记本)中使用 Elasticsearch 1.4.4。一切都设置为默认值,因为我从未更改过任何设置。 当我启动它时,我通常会收到以下消息: [2015-10-27 09:38:
我收到错误 Lock wait timeout exceeded;尝试重新启动事务。这是什么原因,如何解决?仅供引用:MySQL 配置文件中的 innodb_lock_wait_timeout = 1
我对 Slack 中的 block 功能有疑问。有人设法构建 3 列而不是 2 列吗? 我凭直觉尝试了以下代码,但它不起作用: { "blocks": [ {
div 中的内容超过由 css 决定的固定大小。 #fixeddiv { position: fixed; margin: auto; max-height: 300px
我想将 EditText 字段限制为 150 个字符,我可以很容易地做到这一点。但是,当用户试图超过该限制时,我还需要通过键入(即第 151 个字符)或粘贴超过 150 个字符来提醒用户。 解决这个问
我目前正在使用此代码并排记录两个窗口: ffmpeg -f gdigrab -framerate 30 -i title="" -f gdigrab -framerate 30 -i title=""
我在几个包含长字符串的单元格上使用嵌套的 SUBSTITUE 函数,并定期更新 SUBSTITUE fx,这导致我将其复制并粘贴到所有需要它的单元格中。问题是,我的 SUBSTITUTE 列表会随着时
我创建了一个标题 div,如下所示:
Here is the demo link 您怎么看,页面中只有 8 个广告可见,但我有 14 个广告。我已阅读有关广告限制的信息 here但不明白是不是我的情况?有人可以给我确切的答案,为什么我看不
我的非常简单的算法 - C 中的快速排序有问题。它非常有效(随机化大约 0.1 秒并检查列表是否已排序)但是当我想要对超过 500k 的元素进行排序时它会崩溃。不幸的是,我需要对它们进行更多排序,因为
我成功解决了一个关于 Hackerrank 的问题,它通过了所有测试用例,但我得到了一个错误,超过了时间限制。我猜如果我优化我的代码它会工作,但我想不出任何方法来使我的代码更有效率。 问题是: 对大小
你会如何用 包围下面的文字3 个反引号 ```使用 tpope 的 Vim Surround . 我所能做的就是 1 个反引号 使用 S`在视觉模式下: 最佳答案 这不是你问的,但这可以在没有环绕的情
我目前有一个模拟账户。我正在尝试为我的雇主使用 SwifType 制作 POC。我们有一个非常大的数据库,每 1 小时索引一次,并创建一个 JSON 文件。我认为与 Elastic 的集成将非常容易,
我为一个大约有 100 到 120 名成员的小型组织维护网站。 每个月,我们都会发送一封电子邮件,通知我们的成员我们将在即将举行的 session 中讨论的主题。 我正在尝试使用我们的网站为我们提供一
这个问题已经有答案了: How to automatically input an array formula as string with more than 255 characters in l
我有一个在 JBoss 6.1 中运行的 JSF 应用程序,它使用内部Tomcat Servlet 容器。 我已经通过apache commons文件上传实现了上传。我想防止上传过大的文件并设置了属性
当我尝试在 PyMySQL 上执行查询时,出现以下错误: pymysql.err.InternalError: (1205, 'Lock wait timeout exceeded; try rest
我是一名优秀的程序员,十分优秀!