开始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 的新项目。
点击“创建新项目”对话框中的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控件更改为Label或Text控件 。
至于在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部分:表中有什么?描述你的数据的更多相关文章
- 开始VS 2012 中LightSwitch系列的第2部分:感受关爱——定义数据关系
[原文发表地址] Beginning LightSwitch in VS 2012 Part 2: Feel the Love - Defining Data Relationships [原文发表 ...
- 开始VS 2012中LightSwitch系列的第3部分:我该选择哪一个屏幕模板
[原文发表地址] Beginning LightSwitch in VS 2012 Part 3: Screen Templates, Which One Do I Choose? [原文发表时间] ...
- 开始VS 2012中LightSwitch系列的第4部分:太多信息了!使用查询来排序和筛选数据
[原文发表地址] Beginning LightSwitch in VS 2012 Part 4: Too much information! Sorting and Filtering Data ...
- 开始VS 2012中LightSwitch系列的第5部分:我可以使用用户权限来控制访问权吗?
[原文发表地址] Beginning LightSwitch in VS 2012 Part 5: May I? Controlling Access with User Permissions [ ...
- CDC不同模式在ODI中体现系列之一 同步模式
CDC不同模式在ODI中体现系列之一 同步模式 Oracle Database Change Data Capture feature 变化数据捕获是一个通称,是用来描述捕捉增量变化应用到数据存储.随 ...
- 微软BI 之SSAS 系列 - 在SQL Server 2012 中开发 Analysis Services Multidimensional Project
SQL Server 2012 中提供了开发 SSAS 项目的两种模型,一种是新增加的 Tabular Model 表格模型,另一种就是原始的 Multidimensional Model 多维模型. ...
- VS2010(2012)中使用Unit Testing进行单元测试
原文 VS2010(2012)中使用Unit Testing进行单元测试 使用VS 2012自带的Unit Testing工具进行单元测试是非常方便的.网上关于这方面的例子很多,这篇随笔只起个人学习笔 ...
- SQL Server 2012中快速插入批量数据的示例及疑惑
SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...
- 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript
同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...
随机推荐
- 深入浅出Node.js(一):什么是Node.js
Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟Joyent获得企业资助,再到 ...
- win7+vs2010+opencv2.4.6配置
记录一下配置,省的以后还到处去找: (一) 添加环境变量://第一次使用opencv的话需要加环境变量:” %opencv%\build\x86\vc10\bin”和”%opencv%\build\c ...
- 使用cookie实现计数器功能
思路是:若第一次访问,创建cookie.若访问次数大于一,则先读出cookie值赋给一个值,然后再重新写入cookie. <?php if(!isset($_COOKIE['num'])){ $ ...
- VS2012智能提示消失的解决方法
1.点击电脑左下角的“开始菜单”->"所有程序"->Microsoft Visual Studio 2012->Visual Studio Tools->V ...
- page、pageContext、servletContext的区别
ServletContext是容器上下文,指当前的一个web应用的上下文 JSP网页本身,page对象是当前页面转换后的Servlet类的实例.从转换后的Servlet类的代码中,可以看到这种关系:O ...
- 确定比赛名次---HDU1285(拓扑排序)
http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意: 给你每场比赛的成绩,让你根据成绩把排名弄出来 分析: 本来我是用普通方法写的,然后就一直wa, ...
- CMM能力成熟度模型
CMM把软件企业的过程管理能力划分为5个等级: 1 .初始级:个别的.混乱无序的过程,软件缺乏定义,项目的成功严重依赖于某几个关键人员的努力.软件质量由个人的开发经验来保障. 2.可重复级 实施了基 ...
- javascript基础知识-数组
1.javascript创建数组时无需声明数组大小或者在数组大小变化时重新分配 2.javascript数组是无类型的 3.数组元素不一定要连续 4.针对稀疏数组,length比所有元素的索引都要大 ...
- Spring Web
Spring MVC的初始化: WEB容器加载后,通过使用DispatcherServlet拦截器加载IOC容器到WEB容器中,并通过ContextLoderListener将其初始化, 因为Spri ...
- 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 ...