问题标签 [datarelation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
14271 浏览

ado.net - 如何:使用 DataRelation 对 DataSet 中的两个 DataTable 执行连接?

如何在数据集中的两个数据表之间执行连接?

我在两个表之间创建了一个 DataRelation……然后呢?

我正在查看有关如何将行从表复制到结果表的一种解释( http://www.emmet-gray.com/Articles/DataTableJoins.htm )?

有一个更好的方法吗?

0 投票
3 回答
2354 浏览

c# - LINQ 是否使用 DataRelations 来优化连接?

我在任何地方都找不到答案,在我开始使用 Reflector 浏览生成的代码之前,我认为值得一问:

假设我对 DataSet 中的 DataTables 运行以下 LINQ 查询:

如果父表和子表之间存在使用所示关键字段的 DataRelation,LINQ 会使用它吗?也就是说,它会在父表中找到值为“foo”的行,然后调用GetChildRows投影子行吗?

或者这是我必须明确指定的东西?(如果是这样,我该怎么做?)

0 投票
0 回答
21005 浏览

c# - 与 C# 中类型字符串的关系的主/详细数据网格视图

我想在 C# 中使用两个 datagridviews 和 DataRelation 来显示主/详细关系。

主表和明细表之间的关系是来自字符串类型的 ID(并且没有机会将 ID 更改为整数类型)。

更改主表中的行时,似乎 DataGridView 无法更新详细视图。

有谁知道是否可以使用字符串 ID 实现主/详细视图,如果可以,如何实现?还是我必须使用另一家公司的外部 DataGrid?


更新

就个人而言,我认为使用字符串而不是整数没有区别。我唯一能想到的是网格无法使用字符串 ID 关系处理主详细信息视图。

这是一个例子,请创建一个新的VS 2008项目并复制代码。更改连接字符串和数据关系:

0 投票
1 回答
5192 浏览

c# - 与 C# 中类型字符串的关系的主/详细数据网格视图

我想在 C# 中使用两个 datagridviews 和 DataRelation 来显示主/详细关系。

主表和明细表之间的关系是来自字符串类型的 ID(并且没有机会将 ID 更改为整数类型)。

更改主表中的行时,似乎 DataGridView 无法更新详细视图。

有谁知道是否可以使用字符串 ID 实现主/详细视图,如果可以,如何实现?还是我必须使用另一家公司的外部 DataGrid?

就个人而言,我认为使用字符串而不是整数没有区别。我唯一能想到的是网格无法使用字符串 ID 关系处理主详细信息视图。

更新:问题已解决,问题是一个关系来自类型 nchar 并且在字符串末尾有 blancs。谢谢您的帮助!

这是一个例子,请创建一个新的VS 2008项目并复制代码。更改连接字符串和数据关系:

0 投票
1 回答
1110 浏览

.net - 来自单个查询的 DataRelation

我有以下一段 VB.NET 代码:

基本上,我执行两个查询:第一个获取所有用户,第二个获取所有消息。我在 DataSet 中定义了两个表,并通过 DataRelation 将它们链接起来,因此 Users 表是 Messages 表的父表。

如果我想从两个表中选择所有行,这很有效,但是如果我有一个包含 4 个嵌套表和条件查询的更复杂的结构怎么办?

如何通过这个单一查询创建一个包含四个表和三个 DataRelation 的 DataSet?

谢谢

0 投票
1 回答
3187 浏览

c# - 如何获得 DataGridViewCheckBoxColumn 来显示 DataRelation 状态?

假设我有一个DataGridView(名为dataGridView)显示强类型DataTable(名为ChildDataTable)。

dataGridView有一个DataGridViewCheckBoxColumn(名为parentIDColumn)绑定到ChildDataTable中每个ChildDataRow上的字段属性ParentID

ParentID是将ChildDataTableDataTableDataSet(创造性地命名为ParentDataTable)中的另一个相关联的外键。在这种情况下,一个孩子可能只有一个父母。ParentID(和相关的ParentDataTable.ID)字段的类型为Guid

ChildDataTable.ParentID允许空值。空值表示子级与任何父级“断开连接”,并且我希望它在dataGridView中显示为未选中CheckBox的列parentIDColumn(为澄清目的而标记为“有父级”)。

我尝试通过创建实现相等和比较操作的自定义类型来操作parentIDColumnTrueValue上的andFalseValue属性:

...然后将它们设置为parentIDColumn上的 True/False 值:

但是调试器从来没有命中我的断点,这表明我错过了这条船。显示dataGridView时出现以下错误:

所以我知道我的定制没有达到。格式调用似乎发生在单元格级别(而不是列),所以我不确定是否有更好/不同的方式我错过了。

我如何为复选框列注入我的 True/False 逻辑,以便选中表示外键不为空,未选中表示它是?

0 投票
2 回答
5148 浏览

c# - DataRelation 插入和外键

我有一个带有两个 DataGridViews 的 winforms 应用程序,显示我的 Person 和 Address 表中的主从关系。Person 表有一个 PersonID 字段,它是自动递增的主键。Address 有一个 PersonID 字段,即 FK。

我用 DataAdapter 填充我的 DataTables 并设置 Person.PersonID 列的 AutoIncrement=true 和 AutoIncrementStep=-1。我可以从 DataGridView 在 Person DataTable 中插入记录。PersonID 列显示 PersonID 的唯一负值。我通过调用 DataAdapter.Update(PersonTable) 更新数据库,SQL Server 自动将负的 PersonID 转换为正的唯一值。

这就是问题所在。Address DataGridView 通过 PersonID 显示与 Person 有 DataRelation 的地址表。插入的人员记录具有临时负的 PersonID。我现在可以通过 DataGridView 将记录插入到 Address 中,并且 Address.PersonID 设置为 DataRelation 映射中的负值。我调用 Adapter.Update(AddressTable) 并且否定的 PersonID 进入地址表,打破了这种关系。

你们如何使用 DataTables 和主从 DataGridViews 处理主键/外键?

谢谢!史蒂夫

编辑:

经过更多的谷歌搜索,我发现 SqlDataAdapter.RowUpdated 事件给了我我需要的东西。我创建了一个新命令来查询使用@@IDENTITY 插入的最后一个id。它工作得很好。DataRelation 为我更新了 Address.PersonID 字段,因此需要先更新 Person 表,然后更新 Address 表。所有新记录都正确插入,并带有正确的 ID!

0 投票
4 回答
3373 浏览

c# - DataSet 中 DataRelation 的用途是什么?

我正在处理的 AC# 程序需要将数据导出到一个或多个数据表。这些表的某些列将相互关联,这样一个表的 ID 列可能会被另一个表的单元格引用。这似乎是设置 DataRelation 的常见情况。但我试图了解这些关系以后如何实际使用。

我对关系数据库有一点经验,但不多。我了解 SQL 查询和左连接、右连接等内容。而且我在 Access 方面做了一些工作,通过 GUI 和手动创建查询。但我从未在数据库本身中创建任何关系。我在一分钟前在 Access 中尝试过这个。创建关系后,我尝试将我的两个测试表添加到查询中,并且自动创建了连接。

然而,当我真正查看实际的 SQL 时,它实际上包含了一个从关系派生的 JOIN 命令。但这也意味着查询根本不依赖于关系。在没有像 Access 这样的拖放类型查询编辑器的数据库中如何使用关系?

我想在数据库中创建关系或在 DataSet 中创建 DataRelation 的唯一原因是我可以暗示应该存在哪些关系但不一定强制它们?

0 投票
1 回答
4051 浏览

c# - 如何在 DataGridView 上显示 DataRelation

5,我尝试使用单个查询来解决“多个实体情况”,然后使用 DataRelation 将它们连接起来,所以在我意识到我已经尝试以这种方式显示数据之后:

但它不会成功,因为每个查询结果都在不同的DataTable上,但在同一个DataSet中,那么我怎样才能显示“joined result”?

谢谢

0 投票
1 回答
618 浏览

ado.net - 如何从 ITEM 表中获取所有行,它们是父 ITEM 表行的子级,关系单独存储?

如何从 ITEM 表中获取所有行,它们是父 ITEM 表行的子级,关系单独存储?我该如何加入才能做到这一点?“从 ITEM 表中获取所有行,它们是该特定 ITEM 表行的子项,来自该父项的所有子项,其中关系存储在单独的 RELATIONSHIP 表中”

因此,鉴于有一个 ITEMS 和一个 RELATIONSHIPS 表。关键列是:

我试图了解 DataSet / DataRelation 方法是否可以以某种方式映射这些关系。例如,如果我基本上想要一种方法来实现请求“给我 DataRow [] 表单中的所有子项,给定父项数据行,基于关系表”,有没有办法使用 DataRelation 来做到这一点?如果不是,使用 DataSet 方法最简单的方法是什么?

编辑:也就是说,假设我使用的是 DataSet,并且在 DataSet 中,我对上面描述的每个物理数据库表都有一个 DataTable。

谢谢