linq2sql,存储库模式 - 如何从两个或多个表查询数据?

2024-05-16

我使用存储库模式(和 linq2sql 作为数据访问),并拥有例如 ProductsRep 和 CustomersRep。

在非常简单的场景中,数据库有两个表 -产品(产品 ID、客户 ID、产品名称、日期)和顾客(客户 ID、名字、姓氏)。

每个存储库都提供创建、更新、删除和获取特定模型对象的方法,并且可能是一些过滤器。

但是,如果我想按产品名称查询购买特定产品的所有客户,我必须使用 ProductsRep 获取该产品的 ProductID,然后使用 CustomersRep 获取使用该 id 购买产品的所有客户。

我对吗?这实际上是l2s必须生成的两个sql请求,是否可以只做一个请求?

而且,一般来说,如果我们想使用具有关系和存储库模式的多个表来查询数据,如何通过将查询量减少到最少来实现这一点?

Thanks.


想想你所做的陈述:

但如果我想查询所有客户 逐个购买特定产品 名称,我必须获取该产品的 ProductID 使用 ProductsRep 的产品然后得到 所有购买产品的客户 此 ID 使用 CustomersRep。

这闻起来有麻烦。创建存储库以促进域中隔离区域的行为,而不是针对每个业务实体。

DDD/Repository 的一个常见错误是考虑数据。不。想想行为。

你有一个Products实体指的是Customer。这意味着产品不能没有客户而存在。正确的?因此一个Customer是您的聚合根 - 它控制域模型这部分的行为。

您对上述答案的评论证实了 - 您正在跨多个存储库工作。您有两个选择 - 1)工作单元,2)修复您的存储库设计。

你只需要 1 个存储库——我们就这样称呼它吧客户产品库.

然后执行上面的查询:

var customersWhoBuyHats = customerProductRepository
                             .Products
                             .Include("Customer")
                             .Where(x => x.ProductName == "Hat")
                             .Select(x => x.Customer)
                             .ToList();

结果是List<Customer>,并且您通过一次数据库调用就完成了这一任务。

HTH.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linq2sql,存储库模式 - 如何从两个或多个表查询数据? 的相关文章

  • 哪个更快:清除集合或实例化新集合

    我的代码中有一些通用列表 其中有数十或数百个元素 有时我需要用其他对象重新填充此列表 所以问题是 调用什么会更快Clear 方法或创建一个new List
  • matplotlib savefig 性能,在循环内保存多个 png

    我希望找到一种方法来优化以下情况 我有一个使用 matplotlib 的 imshow 创建的大型等高线图 然后 我想使用此等高线图来创建大量 png 图像 其中通过更改 x 和 y 限制以及长宽比 每个图像都是等高线图像的一小部分 因此
  • 需要更快的数组复制

    经过一些阅读后 我发现在 java 中复制数组的方式存在一些差异 对于我的应用程序 我有一个递归节点树 每个节点都包含一个 2d 板数组 8x8 通过探查器测试 我能想到的最好的办法是 java util Arrays copyOf arr
  • 使用复选框来控制 Input.value (有一个令人讨厌的扭曲。)

    几天来我一直在研究使用复选框控制 UI 的方法 在 Stack 上一些成员的帮助下 我已经取得了很大的进展 但我的秃顶还没有完全停止 我一直在尝试通过在 UI 控制器旁边包含一个数值来进一步调整我的代码片段 该值稍后将在 web java
  • 具有两个表的谓词构建器

    A Party可以有一个或多个Contact对象 我想选择全部Parties谁的街道名称包含特定关键字 如果我只想搜索Party我可以使用下面的代码 但我如何扩展它来搜索Contact public IQueryable
  • php 日期函数和 Carbon 哪个更快?

    Carbon 是 DateTime 的简单 PHP API 扩展 我想知道我们可以通过 Composer 安装 Carbon 来使用日期时间函数 php 日期时间函数和 Carbon 哪个更快 我对您的评论做了一些测试 比较了 DateTi
  • Fortran的性能

    Fortran 的表现计算机语言基准游戏 http shootout alioth debian org 出奇的糟糕 今天的结果显示 Fortran 在两项四核测试中分别排名第 14 和第 11 在单核测试中排名第 7 和第 10 现在 我
  • Android 7 GraphicBuffer 替代方案,用于直接访问 OpenGL 纹理内存

    从移动设备具有 CPU 和 GPU 共享内存这一事实中获利的唯一方法是使用GrphicBuffer 但由于 Android 7 限制对私有本机库 包括 gralloc 的访问 因此无法再使用它 问题 是否有其他方法可以直接内存访问纹理的像素
  • 将属性名称作为字符串传递到方法中 .NET

    我正在将 LINQ to SQL 用于 NET MVC 应用程序 在我的数据库中 我有一堆包含 Y 或 N 值的列 我正在尝试编写一个通用方法 该方法将返回数据库中的所有记录columnName Y 到目前为止我已经得到了这个 public
  • 使用 Java-Large 文件查询 JSON 文件

    我正在尝试使用 java 解析下面的 JSON 文件 我需要能够 按 ID 或名称或对象中的任何字段搜索文件 也在字段中搜索空值 搜索应返回整个对象 该文件将会很大 并且搜索应该仍然很省时 id 1 name Mark Robb last
  • OpenGL:顶点越多,性能越慢

    我正在开发一个程序的一部分 其中给定 xyz 坐标集合 制作 3D 模型 我已经完成了这张图片所需的所有功能 即平移 旋转 缩放 但是给出的 xyz 坐标越多 程序运行速度就越慢 我的程序在处理 29 000 个坐标时运行得非常流畅 但当我
  • n的渐近增长选择下限(n/2)

    如何找到 n select Floor n 2 的渐近增长 我试过 使用扩展并得到它等于 n n 1 floor n 2 1 n floor n 2 知道我该如何从那里去吗 感谢任何帮助 更喜欢提示而不是答案 我同意上面的答案 但想提供更多
  • 如何在大空间尺度上加速A*算法?

    From http ccl northwestern edu netlogo models community Astardemo http ccl northwestern edu netlogo models community Ast
  • 预填充 UICollectionView 单元重用队列

    问题 我有一个应用程序 只有一个UICollectionView我第一次滚动它时很卡顿 我已将来源范围缩小到正在创建新单元格 2 的事实 使用initWithFrame 因为周围没有可以重复使用的细胞 初始滚动后 重用队列不为空 单元格可以
  • LINQ to SQL:从位于不同服务器上的两个数据库获取记录

    我需要从两个不同的表中获取记录 数据库位于两个不同的 SQL Server 中 例如 销售数据库位于服务器 1 上 采购数据库位于服务器 2 上 销售和采购数据库都有一些表集 例如销售数据库中的 table1 和采购数据库中的 table2
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 与常规 SQL 查询不同,为什么“linq to sql”查询以 FROM 关键字开头?

    为什么 linq to sql 查询以FROM与常规 SQL 查询不同的关键字 LINQ 模仿Logical Query processing在 SQL 中你有 8 SELECT 9 DISTINCT 11 TOP 1 FROM 2 ON
  • 如何优化 R 中的 sapply 来计算数据帧上的运行总计

    我在 R 中编写了一个函数来按月份计算累积总数 但随着数据集变大 我的方法的执行时间呈指数增长 我是一名 R 程序员新手 你能帮我提高效率吗 该函数以及我调用该函数的方式 accumulate lt function recordnum d
  • 为什么 java.util.Arraylist#clear 按照 OpenJDK 中的方式实现?

    http grepcode com file repository grepcode com java root jdk openjdk 6 b14 java util ArrayList java 473 http grepcode co

随机推荐

  • 如果是 @ConstructorResult,@SqlResultSetMapping 应该放在哪里

    我正在尝试使用jpa的entityManager的createNativeQuery方法映射非实体pojo 通过使用这样的东西 SqlResultSetMapping name ResultMapping classes Construct
  • 在 Windows 7 中使用 Windows 服务截取屏幕截图 [重复]

    这个问题在这里已经有答案了 我知道这是一个关于 Win 7 中的屏幕截图与 c 上的 winService 的老问题 我已经阅读了 Stack Overflow 上有关此内容的所有文章以及 CodeProject 上的很多文章 我了解服务的
  • 在 Visual Studio 中设置 SSL 证书

    我在新计算机上全新安装了 Visual Studio Community 2019 我启动了一个网络应用程序项目 第一次运行它 然后当提示接受自签名证书时 我以某种方式设法单击 不再询问 and No 此时 运行网络应用程序时 我收到 ER
  • 使用 .htaccess 重定向到 404 错误的 php/html 文件

    例如 我想将所有 404 错误重定向到 404 php 我尝试过使用ErrorDocument 404 404 php在 htaccess 中 但如果运气不好 也许我的其他规则不允许这样做 我不太确定 因为我在 www 上找不到此信息 如果
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • 仅在 Android 应用程序中使用 XHDPI 可绘制对象?

    如果您计划在不久的将来支持 LDPI MDPI HPDI 或许还有 XHDPI 那么是否可以在项目中仅包含 XHDPI 可绘制对象并让设备将其缩放到所需的分辨率 我已经测试过在 Photoshop 中将可绘制对象的大小调整为 MDPI 和
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • LibreOffice 并行将 .docx 转换为 .pdf 效果不佳

    我有很多 docx 文件需要转换为 pdf 将它们一一转换需要很长时间 所以我编写了一个 python 脚本来并行转换它们 from subprocess import Popen import time import os os chdi
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 如何使用额外标记输出 wp_list_categories

    我目前正在使用下面的脚本在无序列表中输出我的所有 WordPress 类别 如何获得带有额外标记的输出 ul ul 例如 ul li Category 1 rsaquo li li Category 2 rsaquo li ul 代替 ul
  • 错误[E0554]:#![功能]可能无法在稳定发布通道上使用无法使用货物安装赛车

    我正在尝试使用 Cargo 安装 Racer 所以我执行了命令cargo install racer在终端中并导致错误 error E0554 feature may not be used on the stable release ch
  • 检查 XML 元素是否存在

    如何验证 XML 文件中是否存在特定元素 假设我有一个不断变化的 XML 文件 我需要在读取 解析它之前验证每个元素是否存在 if doc SelectSingleNode mynode null 应该这样做 显然 其中 doc 是您的 X
  • 将构造函数作为参数传递给方法

    我是java新手 开始研究构造函数 我看到一些构造函数作为参数传递给方法的示例 请告诉我当构造函数作为参数传递给方法时会发生什么 或者建议我一些链接 我可以在其中获得有关使用构造函数的足够知识 根据您需要传递构造函数的目的 您可以考虑传递供
  • 为什么我的混淆矩阵只返回一个数字?

    我正在做二元分类 每当我的预测等于事实时 我发现sklearn metrics confusion matrix返回单个值 难道没有问题吗 from sklearn metrics import confusion matrix print
  • 从 Google 电子表格接收实时更新

    我正在尝试设置与 Google 电子表格的双向同步 我可以使用其数据集将更改推送到 Google 电子表格Google 表格 API V4 https developers google com sheets 现在 我希望每当有人实时或近实
  • DbGeography 多边形到 JSON

    我将 DbGeography 多边形存储在数据库中 我的控制器从数据库获取多边形 我需要将它们转换为 JSON var polygons db Areas Where x gt x Type type Select x gt new Vie
  • JSON 中的哈希到底是什么?

    我正在学习 JSON 但我发现你也可以将所谓的 哈希 放入 JSON 中 我在哪里可以找到什么是哈希 或者你能向我解释一下什么是哈希吗 另外 什么是哈希图 我有 C 和 C 经验 正在学习 JS Jquery 和 JSON 哈希是一个稀疏数
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • linq2sql,存储库模式 - 如何从两个或多个表查询数据?

    我使用存储库模式 和 linq2sql 作为数据访问 并拥有例如 ProductsRep 和 CustomersRep 在非常简单的场景中 数据库有两个表 产品 产品 ID 客户 ID 产品名称 日期 和顾客 客户 ID 名字 姓氏 每个存