c# - 如何从更大的数据集中生成过滤的 .net 数据集(包括所有 JOINed 表)?
问题描述
我有一个用于各种系统(例如 Playstation、Atari 2600 等)的游戏 MySQL 数据库。它还保存其他信息,例如替代游戏名称(针对每个区域)和游戏开发者等。这通过 DataSource 向导通过 tableadapter 连接到强类型数据集dbds
。下面是一些表格的屏幕截图(直接取自数据集设计器 + 大大简化了——实际上还有更多表格):
(我错过了 gi_system 表,但你明白了要点 - SystemID 已打开gi_game
)
这是一个大型数据集。我想生成一个 xml 文件,其中包含一个系统的所有游戏相关表的数据。然后,我会将其导入另一个应用程序,该应用程序具有具有相同架构的数据集。这基本上允许我一次填充一个系统的数据集。显然,任何进程还需要将其他数据表中的相关行导出到 xml 文件中。
当然,要完整地导出/导入数据集很简单,.writeXML
但是,我对如何实现上述目标感到困惑。
我知道我也可以将其他应用程序直接连接到 mysql 数据库,但我正在寻找离线解决方案。
我研究了 Linq To Dataset (https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/cross-table-queries-linq-to-dataset),但这似乎只产生一个查询中的结果“表”。
另一个问题是,如果 Linq 合适,鉴于上图中显示的关系结构,我将如何编写查询。我进入了 JOIN 类型的领域,这有点令人费解。上面的 linq,如果它只是游戏和组织,很简单:
From g in gi_game
Join o in gi_organisation
On g.DeveloperID Equals o.ID
Select new {GameName = g.name, OrgName = o.name}
但是,如果我还想为 提取表行gi_gamealtname
,如果父子关系颠倒,我将如何将其写入此查询?此外,这将不得不“达到”另一个步骤来拉入相关gi_region
行。]
最终目标是在“接收”应用程序中,我只需执行 GamesDataSet.ReadXML("export.xml") 即可加载特定系统的所有游戏以及任何关联的表行。
任何帮助表示赞赏。谢谢。
编辑:我只是想 - 我不知道首先对 MySQL 数据库进行查询是否是一种可能的解决方案?也就是说,在加载数据集之前对数据执行 SQL 查询。问题是双重的:我不知道如何在应用程序端的代码中执行此操作(我知道如何进行自定义 TableAdapter 查询,但现在是针对数据集),而且问题仍然存在于如何构建SQL查询解决了上述问题。
解决方案
推荐阅读
- python - 将json转换为没有标题的熊猫
- python - 如何避免计算排列数的冗余步骤?
- jquery - jQuery - 添加/删除所需的输入
- java - 在 Spring 的服务器启动期间,如何在缓存中使用填充的数据?
- laravel - 我有外键约束问题
- webpack - Webpack 无法解析“babel-loader”
- javascript - 构建 API 时,解析服务器上的业务逻辑在哪里?
- bash - 在 zsh 脚本中传播第 n 个参数之后的所有参数
- angular - Angular + Electron - 构建和分发 URL
- java - 如何使用 Spring5 WebClient 进行异步调用