首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataSet中DataRelation的用途是什么?

DataSet中DataRelation的用途是什么?
EN

Stack Overflow用户
提问于 2009-08-26 00:50:16
回答 4查看 3.4K关注 0票数 2

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

我对关系数据库有一点经验,但不是很多。我理解SQL查询和像LEFT join,right join之类的东西。我在Access中做过一些工作,用GUI和手工创建查询。但我从未在数据库本身中创建过任何关系。我一分钟前在Access中尝试过。在创建关系之后,我尝试将我的两个测试表添加到查询中,连接被自动创建。

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

我想要在数据库中创建关系或在DataSet中创建DataRelation的唯一原因是不是为了暗示应该存在什么关系,而不一定强制它们?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-26 01:04:43

DataRelations用于:

  • 强制引用完整性(您不能通过关系引用父table)
  • Navigate中不存在的行,例如,获取关系的子行或父行:

具有引用父行或子行的表达式的DataRow[] orderRows = customerRow.GetChildRows("Customers_Orders");

  • Create计算列

OrderTotalColumn.Expression = "Sum(Child(Orders_OrderDetails).Quantity * Child(Orders_OrderDetails).UnitPrice)";

DataRelations也可用于Windows Forms绑定系统

票数 1
EN

Stack Overflow用户

发布于 2009-08-26 00:54:40

实际上恰恰相反。设置表之间的关系有助于强制执行这些表。如果设置外键关系并尝试将数据插入到表中,并且不包括外键,则数据库将停止您的操作。

当你建立关系时,许多数据库也有级联的更新和删除。当您更新/删除父关系时,它们将自动更新和/或删除子关系。

DataRelation的工作原理与此类似,因为它有助于在代码级别强制执行关系……

下面是一些数据库设计基础知识的链接:http://www.sqlteam.com/article/database-design-and-modeling-fundamentals。#4、5、6和7谈论关系。

这里有另一个关于http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx的更多信息

以下是在使用DataSet时如何在代码中使用DataRelation来帮助处理父/子关系的教程:

http://www.dotnetjohn.com/articles.aspx?articleid=63

下面是DataRelation的MSDN:http://msdn.microsoft.com/en-us/library/system.data.datarelation(VS.80).aspx

票数 0
EN

Stack Overflow用户

发布于 2009-08-26 19:56:12

有时,如果两个表具有相同的名称(ID),则查询设计器中的Access会自动将这两个表的字段联接在一起,即使您尚未创建关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1331809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档