开始VS 2012 中LightSwitch系列的第1部分:表中有什么?描述你的数据

[原文发表地址] Beginning LightSwitch in VS 2012 Part 1: What’s in a Table? Describing Your Data

[原文发表时间] 2012-08-15 10:00

说明:本文是将之前所编的Visual Studio LightSwitch 2011 博文更新到Visual Studio 2012 中的LightSwitch 若要查看原文版本,请点击这里

欢迎来到开始Visual Studio 2012 中的LightSwitch系列的第一部分。首先,我们将从LightSwitch应用程序中最重要的构建部分开始,即。简单来说,表是一种用行和列组织数据的方式。如果你曾用过Excel或其他电子表格应用程序,那么在行中是组织数据,而每列是一个字段, 代表你所收集数据的特定类型。例如,以下是一个客户数据表:

客户表

LastName

FirstName

BirthDate

Doe

Jane

10/20/1972

Smith

John

11/12/1956

当你使用数据库时,数据就以这种方式存储在一系列表中。然后,创建表之间的关系来正确地浏览你的数据。我们将在下一篇博文中讨论关系。至于这篇博文,我们将集中于在LightSwitch 中如何创建和使用表。

LightSwitch 中的表 (实体)

用LightSwitch构建的应用程序是基于数据的应用程序,它提供用户界面,可查看、 添加和修改数据。LightSwitch通过使用界面和表简化了这些应用程序的开发。因为LightSwitch可以使用其他外部数据源,而不一定要使用数据库中的。在LightSwitch中,我们有时将表称为“数据实体”或只是“实体”。所以无论你是在数据库中有个表还是在SharePoint中有个列表,在LightSwitch 中它们都是实体。 同样,表中的字段或列表中的列都被称为实体的“属性”。

LightSwitch通过实体来表示数据的,实体对于组建应用程序是必需的。你可以通过内置的应用程序数据库来创建这些数据实体,或者从外部数据库,OData 服务,SharePoint列表,或其他数据源导入数据。当你在LightSwitch中创建新的项目时,你需要选择是否想要附加到现有的数据源中或创建一个新表。如果你选择创建一个新表,LightSwitch 将在内置数据库中创建它,也称为内部数据库。然后你可以使用数据设计器来设计表。

当你创建表并将它们互相关联时,其实你是在设计数据模型或架构。如果你之前从没做过的话,以这种方式描述你的数据需要一些练习,但是,你将看到通过使用 LightSwitch,它是非常直观的。你的数据模型描述得越好,在你以后创建界面时, LightSwitch 可以为你做越多。

LightSwitch 数据设计器

无论你附加到现有的数据源还是创建新的数据库,数据设计器是LightSwitch中你所有的数据建模发生的地方。通过使用数据设计器,你可以定义你的实体的属性,并创建它们之间的关系。LightSwitch 将会为你处理许多典型的数据管理任务,例如字段验证、 事务处理、 和并发冲突解决方案,但你也可以通过在属性窗口修改属性来自定义这些任务,和/或通过编写代码来覆盖或扩展它们。

查看数据设计器,请参阅数据: 应用程序背后的信息

有关如何使用数据设计器的视频演示,请参见: 我如何:在LightSwitch应用程序中定义我的数据

创建一个 " 联系人 " 实体

让我们通过一个具体的例子来创建一个实体。假设我们想要创建一个应用程序来管理联系人,就像一个地址簿一样。我们需要创建一个存储联系人数据的实体。首先打开Visual Studio 2012(专业版或更高版),并创建一个名为 ContactManager 的新项目。

image

点击“创建新项目”对话框中的OK之后,LightSwitch主页将询问你是否想要创建一个新表,或连接到外部数据源。

image

单击“创建新表”,这将打开数据设计器。现在,你可以开始描述该联系人实体。打开时,你的光标将会坐落在实体窗口的标题栏中。将其命名为“联系人”,并按下 Enter 键。

image

一旦你这样做了,你将在解决方案资源管理器中Data Sources 文件夹下的ApplicationData节点看到"联系人"。ApplicationData表示LightSwitch 为你创建的内部数据库。联系人是指数据库中存储所有联系人行 (或记录) 的表。你还可以把它当作实体的集合,这就是为什么 LightSwitch把它命名为复数

现在我们要开始对我们的实体定义属性,它与表中的列 (或字段)相关联。此时,你将看到该联系人的实体有一个名为"Id"的属性,且你不能修改它。这是内部字段,代表特定行的数据的唯一键。当你在数据库中构建表时,表中的每一行都有唯一键,以便在表中找到特定的行。此 Id 称为主键, 用属性名称左边的钥匙图片表示。它始终是必需的、 唯一的,并存储为整数。LightSwitch 会为你自动管理主键。

所以我们现在要思考我们想要捕获联系人的哪些属性。我们还需要通过指定类型来决定数据应如何被存储,以及值是否是必需的。我选择了存储以下数据片段: 姓氏,名字、 生日、 性别、 电话、 电子邮件、 地址、 地址 2、 城市、 州和邮政编码。此外,只有姓氏是必需的,那样用户没有被迫输入其他值。

image

此外请注意我选择了与我想要存储的数据类型最匹配的类型。对于电话和电子邮件,我选的是" Phone Number "和" Email Address "类型。这些商务类型会为你提供内置的验证和界面上的编辑器。数据仍然以字符串形式存储在基础表中,但是被固定了格式,并且会在界面上为你自动验证。验证用户输入是很重要的,那样有助于使你的数据保持一致。在属性窗口中,你可以配置规则,例如必需的值、字符串属性的最大长度、 数值属性的数字范围,日期属性的日期范围,以及其它设置。如果你需要的话,你还可以编写自己的自定义验证代码。

关于验证规则的详细信息请参阅: LightSwitch 商务应用程序中的常见验证规则

如果你看不到属性窗口,可以点击 F4 来打开它。选择一个实体的属性,你将看到你可任意配置的相关设置。取决于你所选择的数据类型的属性,你将看到不同的设置。在属性窗口中,所有属性都有一个"外观"部分,以此来允许你指定出现在应用程序界面上的字段标签的显示名称。默认情况下,如果你为实体属性名称使用upper camel case (即首字母大写) ,然后 LightSwitch 会在短语之间插入一个空格。例如, " LastName "属性的显示名称将自动成为" Last Name "。所以对你的实体属性使用此方法是最佳做法。

image

如果他们的名字对用户来说不够直观,或者你只想显示一个标准的帮助消息时,你也可以输入"描述"属性。当用户将鼠标悬停在任何界面上显示了该字段的数据输入控件上时,这个说明会在界面上以工具提示显示。

你在此数据设计器中所做的设置会影响应用程序中的所有界面。如果需要的话,虽然你可以在特定的界面上设置其他的自定义,但是你会花大量时间在数据设计器中配置你的数据模型。以那种方式的话,每次创建一个新的界面时,你不必配置设置。你的实体模型越好,在创建用户界面时, LightSwitch 可以自动为你做的越多

至于联系人实体,让我们添加几个额外的设置。首先,选择 Id 字段,并在外观部分中取消选中" 默认显示"。这样该属性在用户界面的任何地方都不会显示。如前所述,主键是内部字段,用于定位表中的行,并且是不可修改的。所以用户不需要在应用程序中的任何界面上看到它。

至于生日,设置最小值为1/1/1900,那样用户不能输入在此之前的日期。此外当我们查看生日时,我们想要在屏幕上显示长的日期格式,例如“Monday, June 15, 1984”。 你可以直接在LightSwitch的属性窗口中为日期和数字指定格式。在我的例子中,指定“D”作为格式模式,这将显示长的日期。若要查看此日期格式,你可以在屏幕设计器中将Date控件更改为LabelText控件 。

image

至于在LightSwitch中为数字和日期设置格式的详细信息,请参阅:如何在 LightSwitch中为值设置格式

至于性别,我们想要向用户显示一组固定的静态值:"女"、"男"。为了在 LightSwitch 中做到这一点,我们可以使用Choice List 单击属性窗口上的“Choice List…”,这将会打开一个窗口,你可以在其中定义存储在表中的值,以及你希望用户看到的显示名称。对于我们而言,我们只是想在基础数据库表中存储"F"或"M"。因此,还设置了最大长度为 1。

image

默认情况下,字符串的最大长度设置为 255 个字符,并且这可以处理大多数情况,但你可以根据需要更改此设置。

使用属性窗口,你还可以对实体本身进行配置设置。选择联系人实体的标题栏,请注意有一个称为Summary Property的设置。Summary properties用来"描述"你的实体,以及当选中一行数据时, LightSwitch用它来决定要在屏幕上显示什么。默认情况下,LightSwitch会选择你对实体所定义的第一个字符串属性,但你可以在这里更改。

image

当你想要为值设置格式或显示多个字段的值时,你还可以创建计算的属性来作为summary property 使用。

关于Summary Properties的详细信息,请参阅:从LightSwitch Summary Properties 获取最多

测试该联系人实体

既然我们已经设计好了联系人实体,让我们通过创建一个屏幕来快速测试它吧。单击数据设计器顶部的“Screen…”按钮以打开“Add New Screen(添加新屏幕)”对话框。在以后的博文中,我们将讨论更多关于屏幕的东西,但现在只是选择List and Details(列表和详细信息)屏幕。然后在屏幕数据的下拉菜单中选择联系人,然后单击OK。

image

F5来构建和启动应用程序。现在你可以使用此界面将信息输入到联系人表中。单击列表框上方的"+"按钮来添加新的联系人。

image

请注意:标签用空格合理地显示了,姓氏则以粗体显示,表示它是必填的字段。如果你输入我们所指定设置的无效数据,将会显示一条验证错误信息。完成之后,单击应用程序顶部功能区上的保存按钮。这会将数据保存到你的开发数据库中。这只是在你开发应用程序时,在内部数据库中测试的数据存储。真实的数据不会进入到系统直到你将应用程序部署给用户。

在下一篇博文中,我们将谈论关系,以及建立数据模型。下一次再见 !

希望大家喜欢!