[原文发表地址]  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 的新项目。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

测试该联系人实体

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

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

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

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

希望大家喜欢!

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

  1. 开始VS 2012 中LightSwitch系列的第2部分:感受关爱——定义数据关系

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 2: Feel the Love - Defining Data Relationships [原文发表 ...

  2. 开始VS 2012中LightSwitch系列的第3部分:我该选择哪一个屏幕模板

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间] ...

  3. 开始VS 2012中LightSwitch系列的第4部分:太多信息了!使用查询来排序和筛选数据

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 4: Too much information! Sorting and Filtering Data ...

  4. 开始VS 2012中LightSwitch系列的第5部分:我可以使用用户权限来控制访问权吗?

    [原文发表地址]  Beginning LightSwitch in VS 2012 Part 5: May I? Controlling Access with User Permissions [ ...

  5. CDC不同模式在ODI中体现系列之一 同步模式

    CDC不同模式在ODI中体现系列之一 同步模式 Oracle Database Change Data Capture feature 变化数据捕获是一个通称,是用来描述捕捉增量变化应用到数据存储.随 ...

  6. 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project

    SQL Server 2012 中提供了开发 SSAS 项目的两种模型,一种是新增加的 Tabular Model 表格模型,另一种就是原始的 Multidimensional Model 多维模型. ...

  7. VS2010(2012)中使用Unit Testing进行单元测试

    原文 VS2010(2012)中使用Unit Testing进行单元测试 使用VS 2012自带的Unit Testing工具进行单元测试是非常方便的.网上关于这方面的例子很多,这篇随笔只起个人学习笔 ...

  8. SQL Server 2012中快速插入批量数据的示例及疑惑

    SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...

  9. 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript

    同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...

随机推荐

  1. 深入浅出Node.js(一):什么是Node.js

    Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟Joyent获得企业资助,再到 ...

  2. win7+vs2010+opencv2.4.6配置

    记录一下配置,省的以后还到处去找: (一) 添加环境变量://第一次使用opencv的话需要加环境变量:” %opencv%\build\x86\vc10\bin”和”%opencv%\build\c ...

  3. 使用cookie实现计数器功能

    思路是:若第一次访问,创建cookie.若访问次数大于一,则先读出cookie值赋给一个值,然后再重新写入cookie. <?php if(!isset($_COOKIE['num'])){ $ ...

  4. VS2012智能提示消失的解决方法

    1.点击电脑左下角的“开始菜单”->"所有程序"->Microsoft Visual Studio 2012->Visual Studio Tools->V ...

  5. page、pageContext、servletContext的区别

    ServletContext是容器上下文,指当前的一个web应用的上下文 JSP网页本身,page对象是当前页面转换后的Servlet类的实例.从转换后的Servlet类的代码中,可以看到这种关系:O ...

  6. 确定比赛名次---HDU1285(拓扑排序)

    http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意: 给你每场比赛的成绩,让你根据成绩把排名弄出来 分析: 本来我是用普通方法写的,然后就一直wa, ...

  7. CMM能力成熟度模型

    CMM把软件企业的过程管理能力划分为5个等级: 1  .初始级:个别的.混乱无序的过程,软件缺乏定义,项目的成功严重依赖于某几个关键人员的努力.软件质量由个人的开发经验来保障. 2.可重复级 实施了基 ...

  8. javascript基础知识-数组

    1.javascript创建数组时无需声明数组大小或者在数组大小变化时重新分配 2.javascript数组是无类型的 3.数组元素不一定要连续 4.针对稀疏数组,length比所有元素的索引都要大 ...

  9. Spring Web

    Spring MVC的初始化: WEB容器加载后,通过使用DispatcherServlet拦截器加载IOC容器到WEB容器中,并通过ContextLoderListener将其初始化, 因为Spri ...

  10. Refresh recovery area usage data after manually deleting files under recovery area

    Original source: http://www.dba-oracle.com/t_v$_flash_recovery_area.htm If you manually delete files ...