如何:定义数据关系
通过使用 LightSwitch 中的“数据设计器”,您可以创建、修改或删除数据间的关系。关系可帮助您创建在其中相关数据一起使用的屏幕,例如,显示客户及其订单的屏幕。
本文档包含以下几节:
添加同一数据源的表格或实体之间的关系
添加不同数据源的表格或实体之间的关系
修改关系
重数设置
删除行为设置
有关相关的视频演示,请参见 How Do I: Define My Data in a LightSwitch Application?(如何实现:在 LightSwitch 应用程序中定义我的数据?)。
添加同一数据源的表格或实体之间的关系
您可以使用 LightSwitch 数据设计器来添加 LightSwitch 内部数据库中两个表间的关系。某些情况下,您也可以根据某些约束使用数据设计器来在相同外部数据源的实体之间添加关系。否则,您必须在服务器上创建这些关系,然后刷新 LightSwitch 中的数据连接。有关如何刷新到数据源的连接的更多信息,请参见 如何:连接到数据。
添加 LightSwitch 内部数据库中的表格间的关系
在**“解决方案资源管理器”**中,双击您要在关系中使用的表格之一。
在**“数据设计器”的命令栏上,单击“关系”**。
在**“添加新关系”对话框的“名称”**行中,选择您要在关系中使用的两个表格,例如,客户和订单。
在**“重数”**行中,指定要如何与有关这些表格建立关联。有关关系的重数和种类的详细信息,请参见 Multiplicity Settings。
在**“关于删除行为”**行中,指定如果用户试图删除一个表中的记录但数据还存在于其他表的相关记录中(例如,如果用户试图删除客户,但客户下的订单仍然存在)时,您希望您的应用程序如何表现。有关更多信息,请参见 Delete Behavior Settings。
在**“导航属性”**行中,提供每个“导航属性”的名称。导航属性帮助用户在显示相关数据的屏幕区域之间导航。导航属性也可显示为 IntelliSense 中对象,并且您可以使用这些对象来构造代码中的 LINQ 表达式。
单击**“确定”**。
添加附加数据库中的表格间的关系
在**“解决方案资源管理器”**中,双击您要在关系中使用的表格之一。
在**“数据设计器”的命令栏上,单击“关系”**。
**“添加新关系”**对话框打开。
在**“名称”行的“至”**一列中,请选择要向其应用关系的表。
该表必须包含将使用位于关系主键侧的主键。
在**“重数”**行中,指定要如何与有关这些表格建立关联。
有关更多信息,请参见 Multiplicity Settings。
在出现在**“添加新关系”对话框底部附近的数据网格中,从关系的“外部”**一侧选择属性。
此属性必须匹配**“主键”**键属性的数据类型。
说明 如果表包含复合主键,则所有外键数据类型必须匹配。
说明 对于零或一对多关系,“外部”键属性不可是必填字段。对于一对多关系,“外部”键属性必须是必填字段。为零个或一对一关系,必须在关系的两边使用主键值。
选择**“确定”**按钮。
添加不同数据源的表格或实体之间的关系
可以使用 LightSwitch 数据设计器添加不同数据源的表格或实体间的关系。例如,可以添加 LightSwitch 内部数据库中的表格与 SharePoint 列表中的实体之间的关系。
添加不同数据源的两个表格或实体间的关系
在**“解决方案资源管理器”**中,双击您要在关系中使用的实体或表格之一。
在**“数据设计器”的命令栏上,单击“关系”**。
在**“添加新关系”对话框的“名称”**行中,选择您要在关系中使用的表格或实体,例如,客户和订单。
在**“重数”**行中,指定要如何与这些表或实体建立关联。有关关系的重数和种类的详细信息,请参见 Multiplicity Settings。
说明 请注意,对于这类关系,不启用“关于删除行为”行。
在**“导航属性”**行中,提供每个“导航属性”的名称。导航属性帮助用户在显示相关数据的屏幕区域之间导航。导航属性也可显示为 IntelliSense 中对象,并且您可以使用这些对象来构造代码中的 LINQ 表达式。
在**“添加新关系”** 对话框底部附近出现的数据网格中,选择某个表格或实体中的属性,以及其他表格或实体中的相关属性。这些属性是将表或实体链接在一起的地方。例如,选择客户实体的 Id 属性和订单实体的 CustomerID 属性。
单击**“确定”**。
修改关系
可以使用 LightSwitch 数据设计器来修改或删除关系。
修改现有的关系
在**“解决方案资源管理器”**中,双击在该关系中使用的实体或表格之一。
在**“数据设计器”中,请选择表示与其他实体或表格的关系的“导航属性”。例如,客户实体可能有一个名为“订单”**的属性,该属性用作客户订单关系中的导航属性。
在**“属性”窗口中单击“编辑关系属性”**。
**“编辑关系”**对话框将打开。
若要修改关系,请参阅本文档中的相应章节:
“添加同一数据源的实体间的关系”。
“添加不同数据源的实体间的关系”。
单击**“确定”**。
删除关系
在**“解决方案资源管理器”**中,双击在该关系中使用的实体或表格之一。
在**“数据设计器”中,右键单击表示与其他实体或表格的关系的“导航属性”,然后单击“删除”**。
重数设置
下表描述了可用的 LightSwitch 中可用的重数设置的组合。
“起始”值 |
“收件人”的值 |
说明 |
---|---|---|
One |
零或一 |
“发件人”可以有一个或没有“收件人”,但“收件人”必须有一个“发件人”。 |
One |
很多 |
“发件人”可以有许多“收件人”实例,但“收件人”必须只有一个“发件人”。 |
零或一 |
One |
“发件人”必须有一个“收件人”,而“收件人”可以有一个或没有“发件人”。 |
零或一 |
很多 |
“发件人”可以有许多“收件人”实例,而“收件人”可以有一个或没有“发件人”。 |
很多 |
One |
“发件人”必须有一个“收件人”实例,但“收件人”可以有许多“发件人”实例。 |
很多 |
零或一 |
“发件人”可以有一个或没有“收件人”,而“收件人”可以有许多“发件人”实例。 |
说明 |
---|
通过使用 LightSwitch 数据设计,您无法指定一对一、 零或一对零或一以及多对多关系。 |
删除行为设置
下表描述了一种选项,即您可以将其设置为管理用户试图删除属于关系一部分的记录时发生的情况。某些选项可能对特定类型的关系不可用。
“关于删除行为”价值 |
说明 |
---|---|
级联删除 |
“Table1”删除后,删除所有相关的“Table1”实例。 |
Restricted |
如果有相关的“表 2”实例,则“表 1”不能删除。 例如,选择“受限”指定如果在数据库中有某个客户的相关订单,则不能将其删除。 |
取消关联 |
“Table1”删除后,将对与“Table2”实例相关的“Table1”的引用设置为 null。 |