如何在你的LightSwitch应用程序中使用选择器作为过滤器

[原文发表地址] How to Use a Picker as a Filter in your LightSwitch apps [原文发表时间] 2013-08-29 07:17 AM 在过去的几个月中,关于如何做到基于选择器过滤数据的通用模式,我已经得到了不止几个问题。举例来说,我有一个客户表,我想从列表中选择,然后展开他们的详细资料。或者说,我有一个客户列表,我想看到所有的相关订单。 老实说,我以为我已经有一个博客文章是关于如何做到这一点- 但如果连我都不能找到它,那么你可能也无法找到!步骤很简单,你不需要写任何代码,这些步骤在这里… 在同一个表中过滤数据 比方说,我们有一个客户列表,在显示其余字段给用户之前,我们希望有一个屏幕显示,他们应在选择器中选择客户。下面是步骤: 1 – 创建一个查询,通过ID检索客户 在解决方案资源管理器的客户表中,右键单击“添加查询”,在这个例子中,我将它命名为CustomerByID。添加一个过滤器Where ID =,选择“参数”,然后选择“添加新的”去创建一个新的名为ID的查询参数。 需要注意的是,你可以选择参数并且设置这个参数在属性框中是否选择。如果你这样做,那么所有客户的详细资料都将显示在屏幕上。如果遗漏掉了所需的参数项,那么用户必须选择一个客户,去看该客户的详细资料。 2 – 使用查询去创建一个屏幕 无论您使用的是什么样的客户端(Silverlight或HTML)这里的技术是相似的,只是模板不同。在你的客户机节点上单击鼠标右键,并“添加新的屏幕”… 选择CustomerByID作为屏幕数据。如果你正在使用的HTML客户端,那么选择浏览模板。如果使用Silverlight客户端,那么随意挑选像搜索屏幕上的任何列表屏幕。 视图模型中选择CustomerID属性,并在属性窗口中,将其名称更改为客户。请注意您的视图模型会为您自动设置,顾客的属性会设置为一个真正的客户实体并且它的ID会数据绑定到CustomerByID查询的ID参数(如箭头为您指向您在视图模型中选择的Customer.Id项)。像在属性窗口中显示,CustomerByID查询也将会自动执行。这意味着所需的所有参数被输入时,这个查询将会执行,这样的话客户将被选中。 接下来是将客户控件从一个简单的模式选择器变成一个详细的模型选择器 如果你使用Silverlight客户端,那么这些已经被设置到一个自动完成框,但如果你喜欢,你也可以选择一个模态窗口选择器。 3 – 运行吧! 当屏幕出现时,在显示它们的细节之前,用户不得不选择一个客户。 HTML客户端: Silverlight客户端: 请注意,如果在系统中你有很多的潜在客户,我建议根据字段提供一个过滤器,并允许用户简单键入参数(如姓名,电话等),对于Silverlight客户端,您可以使用模态窗口选取器,而不是提供了一个自动搜索。请参阅: Filtering Lookup Lists with Large Amounts of Data on Data Entry…

0

从LightSwitch Silverlight客户端中调用ASP.NET Web API

[原文发表地址] Calling ASP.NET Web API from a LightSwitch Silverlight Client [原文发表时间] 2013-08-23 11:53 AM        在我去塔浩湖度过一个美好的野营假期之前,我向大家展示了如何用你的LightSwitch中间层服务来使用WebAPI,以便于在数据库中调用存储过程。也说明了我们是如何用附加的SQL Server Data Tools (SSDT)来改善VisualStudio 2013中数据库管理的。如果你错过了下面的内容: 向LightSwitch内部数据库中添加存储过程 用WebAPI调用LightSwitch数据库中的存储过程        你可以用SSDT做各种精彩的事情,当然用WebAPI也能办的到。启动Visual Studio 2012 Update 2 (LightSwitch V3), 我们赋予了它在中间层使用ServerApplicationContext的能力,以便于你可以利用LightSwitch内部所有的业务逻辑和数据逻辑来创建自定义的Web服务。这就使得重用你所想要的LightSwitch业务逻辑和数据投资扩展服务层变得非常容易。(看这里和这里几个简单的例子)。        我有几个关于我上一篇博客如何从LightSwitch HTML客户端中调用我们自己创建的Web API的问题。人们问怎样从LightSwitch Silverlight客户端中调用相同的Web API, 基于很多客户现如今都在使用桌面版的客户端,我今天会在这里展示一种可行的解决方案。尽管我今天在这里用到了它,但却不一定非要安装Visual Stusio 2013来完成– 用VS2012 Update2 或更高的版本也是可以的。        因此,继续使用我们之前博文中的例子,让我们看看如何使Web API向LightSwitch Silverlight客户端返回一个结果。 编辑我们的Web API        默认情况下,Web API将返回一个JSON格式的结果。这是一个非常棒的、轻量级的、用来交换数据的格式,它也一个是基于移动版jQuery 包括LightSwitch HTML客户端的跨平台标准。你也可以给Silverlight客户端返回一个JSON结果,然而你可能更希望用XML文件来工作。Web…

0

为你的LightSwitch内部数据库添加存储过程

[原文发表地址]  Adding Stored Procs to your LightSwitch Intrinsic Database [原文发表时间] 25 Jul 2013 7:39 AM 当你建立一个LightSwitch应用程序时,你会被问的第一个问题是你是否要连接到一个现有的数据源。如果你选择创建新的,这意味着你希望使用LightSwitch数据设计来创建数据模型并且用LightSwicth来管理你的数据库。我们涉及的这个数据库为内在(或内部)数据库。 我们从客户那里听到的使用内部数据库的缺点之一是,很难管理有许多相关联任务的数据库,像是管理引用数据,存储过程,索引等等。目前这些任务需要使用LightSwitch以外的技术完成。这就是为什么许多客户选择使用外部数据库并且完全不用LightSwitch来管理它们。但是这种方法的缺点是你必须手动来部署和管理数据库架构更新而不是让LightSwitch来为你做这件事。 在Visual Studio 2013预览版中,我们通过允许你在LightSwitch解决方案里添加一个SQL 服务器数据工具(SSDT)解决了这个问题,它可以运行数据库脚本而不是内部数据库。Chris在: Intrinsic Database Management with Database Projects 里介绍了这个功能。我们也在MSDN上建立了一个实例/演练来演示如何使用数据库工程来部署引用数据:Managing Data in a LightSwitch Application. 你还可以使用数据库工程来给你的内部数据库添加存储过程。虽然LightSwitch实体还需要来自数据设计器中的数据模型来创建,但是你可以使用存储过程来进行复杂运算,返回数据给报告面板或者执行其它特定数据库任务。 让我们来看一下如何使用Visual Studio2013预览版来给我们的内部数据库添加存储过程。 我们的LightSwitch 内部数据模型 对于这个例子,我有一个简单的内部数据模型是关于客户–<命令–<详细命令–<产品的。假设我们想要建立一个管理面板来让我们能观察数据库中每个表的数据量。我们可以写一个存储过程来给我们这些信息。 添加 SSDT数据库工程 在LightSwitch中使用数据库工程有两个步骤。首先你需要添加这个工程到LightSwitch的解决方案,之后你需要告诉LightSwitch来使用它。 在解决方案管理器中右键单击LightSwitch管理器,之后选择添加–>新工程… 选择SQL Server节点后你会看到SQL Server数据库的工程模板。给它一个名字并且单击Ok。 接下来你需要把它连接到LightSwitch工程。在你的LightSwitch解决方案属性上双击。在常规属性选项卡你现在会看到一个设置为“SQL 数据库工程”。选择你刚刚添加到下拉列表中的工程。 编写存储过程 现在我们可以添加项目到数据库工程。我们想要写一个能笼统的在我们数据库里查找所有的表并且统计每个表的所有记录的过程。我们写它是为了当我们从架构里添加/删除表时不再需要更改它。所以在数据库工程上单击右键并且选择添加–>存储过程。这个示例中我将把它命名为uspGetTableCounts。   现在你可以创建你的存储过程。你可以在这里使用CREATE语句,它会自动正确调配——这就是数据库工程的美丽之处。你可以在Word文档上找到你可以用SSDT做什么的详细信息:SQL Server数据工具(SSDT)。 CREATE PROCEDURE…

0

发布了新的 LightSwitch VS 2012“我如何?”视频 !

[原文发表地址]   New LightSwitch VS 2012 “How Do I?” Videos Released! [原文发表时间]   2012-11-29 10:36 签出 !我们刚刚在LightSwitch 开发人员中心上的 "我如何?"视频部分发布了几个新视频。这些视频延续了Visual Studio 2012 系列,演示了 VS 2012 中 LightSwitch 中可用的新功能。 我如何: 自动执行行级别的数据筛选? 在本视频中,您会看到如何在Visual Studio 2012的LightSwitch 中通过使用新的筛选方法来执行行级别的筛选。由于 LightSwitch 全部是有关数据的,因此我们添加到 Visual Studio 2012 中的功能之一是筛选数据集,而无论如何或哪些客户端访问它们。这允许对的数据设置全系统的筛选以此支持行级别安全性和共用的方案。 我如何: 部署 一个LightSwitch 应用程序到 Azure 网站? 在本视频中,您会学习到如何使用 Visual Studio 2012来部署的LightSwitch 应用程序到新的 Azure 网站。Azure 网站是用于快速而简单的 web 应用程序和服务的部署的。可以免费启动,然后根据的需要扩展。LightSwitch 的众多强大功能之一是它允许轻松地将的应用程序部署到 Azure。…

0

关于查询性能的提示和技巧

[原文发表地址]  LightSwitch Tips & Tricks on Query Performance [原文发表时间]  2012-05-29 15:31 LightSwitch 允许您连接到多个数据源, 并将它们相关联,以及创建屏幕来编辑数据。这些数据源可以是各种数据库,如 SQL Server 和 SQL Azure、 SharePoint 和自定义的 RIA 服务。在Visual Studio 11 Beta版本中,下一个版本LightSwitch还允许您通过 OData 连接到数据服务,Odata通常都是远程承载的。当这些数据源中的数据大小过大时,或者它们之间的距离增加 (即基于互联网的数据服务) 时,性能就会降低。原因是通过线路的数据集太大、在表中需要搜索的字段的数量过多,或表中的数据已变得非常多。 随着数据的增长和/或"线路"长度的增加,了解影响查询性能的因素变得非常重要。在这篇文章中,我想讨论在 LightSwitch中设计您的实体和针对大型或远程数据集进行查询时,你需要做的一些重要的决定。 默认搜索行为 当您在 LightSwitch 中设计您的实体时,默认情况下所有的字符串属性都是可搜索的。这意味着当在网格或列表中显示数据时,搜索框将执行一个查询,它会比较表中的所有字符串字段来寻找可能的匹配。例如,假如说我有一个来自AdventureWorksLT数据库的customers表。如果搜索”Adam ",然后它会显示在任何字符串字段中任意提及到了单词"adam"的所有记录。 在此表中有 10 个字符串字段,所以针对数据库查询的WHERE 子句是: WHERE ([LastName] LIKE N’%Adam%’) OR ([FirstName] LIKE N’%Adam%’) OR ([MiddleName] LIKE N’%Adam%’) OR ([Title]…

0

在VS 11 LightSwitch应用程序中使用保存和查询管道来标记和筛选数据

[原文发表地址]  Using the Save and Query Pipeline to Flag and Filter Data with LightSwitch in Visual Studio 11 [原文发表时间]  2012-04-26 7:12 说明:此信息适用于Visual Studio 11中的LightSwitch(LightSwitch V2) 在商务应用程序中,根据业务规则有时我们需要额外属性来标记记录,然后在整个应用程序中以某种方式筛选出那些标记过的记录。例如,我们可能有一些关键的信息或历史数据,我们必须将其存储在数据库中,并永远不会删除这些数据。我曾经在卫生保健行业工作过,保持患者的历史数据是很重要的。因此我们不允许用户从系统中删除病人的医院访问信息。但是随着时间的推移,这导致我们的数据集变得很大,并且不能让用户专心地寻找他们需要的相关信息。因此,我们需要一种方式来标记这些记录,然后在整个应用程序中筛选出这些数据。 去年我写了一篇文章,它是基于 LightSwitch Visual Studio 2010 (LightSwitch V1) 的,并展示了如何使用存储和查询管道来存档和筛选记录— — 有效地将其删除,但实际上并非把它们从系统中删除掉:使用保存和查询管道来”存档”已删除的记录。通过使用新的实体集筛选器, Visual Studio 11中LightSwitch (LightSwitch V2)的筛选机制大大地改善了。 在这篇文章中,我将向你展示如何使用新的实体集筛选器方法来应用全局记录筛选器。但首先,让我们一起来回顾一下如何使用保存管道来标记这些记录。 攻到保存管道 任何时候更新、插入或删除实体时,保存管道在中间层中运行。这就是你可以编写商务逻辑的地方,它会在中间层处理更改,并保存到数据存储。让我们看一个例子,在这里我们不想从系统中物理删除客户。这里是此示例的数据模型。请注意我在Customer中创建了一个称为“IsDeleted”的必需字段,它是布尔值类型的。我已经在属性窗口中取消选中”在默认情况下显示”,那样字段在任何屏幕上都是不可见的。 当用户尝试删除一个客户时,为了以编程方式标记IsDeleted字段,只需选择数据设计器中的Customer实体,然后下拉”编写代码”按钮,并选择Customers_Deleting方法。 这里是我们需要编写的2行代码: 1: Private Sub Customers_Deleting(entity As Customer) 2: ‘First discard…

0

在Visual Studio 11的LightSwitch应用程序中使用SQL Server LocalDB

[原文发表地址]  Working with SQL Server LocalDB in LightSwitch Projects in Visual Studio 11 [原文发表时间] 2012-04-19 16:10 说明:本文适用于Visual Studio 11 Beta中的LightSwitch (LightSwitch V2) 在Visual Studio LightSwitch中,当你通过数据设计器设计数据模型时,你不是在创建新的表就是在连接到外部数据源。当你创建新表时,LightSwitch 会自动在内部数据库中创建它们,这也被称为内在数据库或ApplicationData。在 Visual Studio 2010 中的 LightSwitch 的第一个版本中,我们将 SQL 2008 Express用于内部数据库开发。现在Visual Studio 11中的LightSwitch,我们则使用SQL Server LocalDB。(注: LocalDB 仅在开发过程中使用。当你部署你的应用程序时,你可以选择部署到SQL Server的任何版本。) LocalDB 是SQL Server Express的新版本,它占用更少的内存,是为开发人员而设计的。当你安装 Visual Studio 11 时,它会自动为你安装。当开发LightSwitch 项目时,LocalDB 用于替换SQL Server Express 用户实例功能(现在不建议使用它)。在这篇文章中,我将为你们展示一些在LightSwitch项目中使用…

1

基于记录类型来使用不同的编辑屏幕(表继承)

[原文发表地址]  Using Different Edit Screens Based on Record Types (Table Inheritance) [原文发表时间]  2012-01-20 2:59 PM 这周一位读者询问我怎样使用Visual Studio LightSwitch 来基于记录类型打开不同的编辑详细信息屏幕。这是一个很常见的问题,尤其对使用表继承(或子表)的数据模型来说。例如说我们正在构建一个应用程序,该程序是用于宠物商店管理库存动物的。我们需要在Animal表中收集所有动物的共有属性,但是我们也想设置一些表继承到鱼,猫和狗的表中,这些表存放这些动物的特有的属性。当用户在搜索屏幕中选择一个动物时,我们需要显示一个屏幕来让用户使用来自特定表的正确数据。LightSwitch提供一个 “显示为链接”的标签,它可以为该实体自动打开默认的详细信息屏幕,但是在我们的例子中,我们有多个屏幕。当处理LightSwitch中不同类型的关系时,你也需要了解其他的一些技术,特别是关于插入管道。在这篇文章中我会给你演示怎样可以实现这个功能。 创建数据模型 首先让我们从给宠物商店创建一个简单的继承数据模型开始。我们会创建一个保存商店中所有动物共有属性的Animal表。然后我们会创建关于猫,狗和鱼的表来保存这些动物类型的特有属性。Animal表和其他动物表的关系是“一对0或1”的关系。 在这个例子中,Animal表有两个必要的属性,名字和类型。类型是一个有“猫”,“狗”,“鱼”等静态值来对应于动物的选择列表。我们将使用该类型来控制哪些记录应被插入到特定的表中,我们也用它来决定显示哪个屏幕。 接下来,创建一个猫,狗和鱼的表来记录这些动物类型的特有属性。 最后,使用一个“级联删除”的删除行为,设置从Animal表到这些表的“1对0或1”的关系。 现在我们的数据模型看上去像这样。 创建屏幕 接下来我们需要在系统中输入一些新的动物。创建一个New Data屏幕,然后选择Animal作为屏幕数据。当你这样设置时,LightSwitch会在屏幕上显示所有的一对一关联表中的字段。然而,我们只要求用户在该屏幕上输入动物的一般属性,一旦他们保存了,我们会指导他们到正确的猫, 狗或鱼的详细信息屏幕。因此首先删除屏幕设计器的目录树中除名字和类型外的所有项。 接下来,创建一个编辑详细信息屏幕,再次选择Animal屏幕数据。将屏幕命名为CatDetail,然后取消选中“设置为默认详细信息屏幕”。 你会再次看到LightSwitch读取这些特定关系,并将四个表中的所有字段添加到屏幕上。我们需要做些修改。首先,将“类型”从自动完成框修改为标签(Label)。一旦用户在New Data屏幕上输入了动物类型,它就不能被修改了。接下来,从屏幕上删除所有与狗和鱼有关的所有字段。 重复上述步骤来创建DogDetail和FishDetail屏幕,从屏幕中移除不应显示的字段。 最后,添加一个Search Data屏幕,并再次选择Animal作为屏幕数据。选择“名字”内容项,然后在属性窗口中取消选中“显示为链接”。 与其使用内置的“显示为链接”功能,不如创建我们自己的命令行。我们可以在屏幕的任何地方输入命令行,然后将它们显示为按钮或链接。(想了解更多信息,请看:“我命令你!” – LightSwitch 屏幕命令提示和技巧)例如我们可以在屏幕命令条,网格命令条,甚至在行本身上放置一个编辑按钮。让我们向行本身中添加一个命令行。 右击目录树中的数据网格行命令条,选择“添加按钮…”。创建一个新的名为“Edit”的方法。 我们想要将命令行显示为链接而不是按钮,因此在内容目录上选择按钮,然后更改为链接。 编写代码 现在我们需要编写一些代码来将它们放在一起,右击刚才所创建的按钮,然后选择“编辑执行代码”来打开代码编辑器。这里我们要检查哪种动物类型需要打开相应的屏幕。 1: Private Sub Edit_Execute() 2: If Me.Animals.SelectedItem IsNot Nothing Then 3:…

0

如何创建级联下拉列表

[原文发表地址]   Creating Cascading Drop Down Lists in Visual Studio LightSwitch [原文发表时间]    2012-01-12 10:15 AM 在数据输入屏幕上常用的技术是使用一个"下拉列表"(在LightSwitch中称为自动完成框)作为下一步骤的筛选器。这限制了选择的数量,用户在指导下能更轻松地定位那些值。如果你已有一个级联筛选器的列表,第一个列表的选择可以在第二个列表中筛选数据,第二个列表的选择也在下一个列表中筛选数据,以此类推,这种情况下此时这个技术也很有用。LightSwitch通过使用参数化的查询和参数绑定可以轻易实现以上功能,在这篇文章中让我们来看看几种常见的情况。 基于多个表的级联列表 让我们看一个示例,这儿有一个关于国家的表以及它的子表城市表。当将客户输入系统时,城市是从客户表中选择出来的。因此我们在国家与城市以及城市与客户表之间存在一对多的关系。我们的数据模型如下所示: 当用户输入新的客户时,我们不希望在下拉列表中显示数千个城市。虽然用户可以使用自动完成框功能来查找一个城市,要读出并显示所有的城市也会影响性能。最好使用一个模式窗口选取器搜索对话框 (像我在这篇文章展示的),或者首先显示国家列表,然后基于该部分筛选城市列表。 首先,我们需要创建几个查询。第一个是简单地对国家列表进行排序,让它们在列表中以字母顺序显示。右键单击解决方案资源管理器中的国家表,添加一个查询以打开查询设计器。创建一个以国家名字升序排列的名为“SortedStates”的查询: 接下来,通过右击解决方案资源管理器中的城市表,再次选择添加查询来创建一个称为"CitiesByState"的查询。这一次我们将创建一个参数化的查询:Where State.Id属性等于一个称为Id的新参数。查询设计器现在应该如下所示: 现在,像平常一样创建一个客户详细信息屏幕。右击Screens节点并选择"添加屏幕",选择编辑详细信息屏幕模板,然后为屏幕数据选择客户表。屏幕设计器将被打开,而且客户实体中的所有字段都将在内容树中。城市字段显示为自动完成框。 下一步,我们需要将数据项添加到我们的屏幕中,用于跟踪所选的国家。我们将使用此值来决定城市列表上的筛选器,以便用户只看到所选国家中的城市。单击"添加数据项目",并添加称为 SelectedState 的国家类型的本地属性。 下一步, 拖动SelectedState到内容树中的City上面。LightSwitch 将自动为你创建一个自动完成框控件。 因为我们想要以排序方式显示国家, 那么下一步将 SortedStates 查询添加到屏幕中。再次单击"添加数据项目",这次选择查询,然后选择 SortedStates。 接下来选择内容树中的 SelectedState 自动完成框,并在属性窗口中,将Choices属性设置为 SortedStates。 接下来,向屏幕中添加 CitiesByState 查询,并将城市自动完成框中的Choices属性设置为这个查询。再次单击"添加数据项目",然后选择 CitiesByState 查询。 然后选择城市自动完成框,将Choices属性设置为该查询。 最后,我们需要挂钩参数绑定。选择CitiesByState 查询的Id参数,然后在属性窗口中设置Parameter Binding为 SelectedState.Id。一旦你这样做了,左侧的灰色箭头将指示绑定成功。 一旦你设置查询参数的值,LightSwitch 将自动执行查询,因此你不需要为此编写任何代码。按下 f5 键,看看你工作的成果。请注意,城市下拉列表是空的,直到你选择一个国家,此时它激活CitiesByState 查询并执行它。此外请注意如果你选择了城市,然后更改国家,它会仍然正确显示所选内容,不会消失。只要记住当用户更改国家选择时,城市查询会针对服务器再次执行。 另一件你可能要做的事情是初始化显示这个城市属于哪个国家。当屏幕打开时,选定国家是空白的。这是因为它绑定到一个没有数据的屏幕属性。但是我们可以轻易地在代码中设置SelectedState 的初始值。回到屏幕设计器右上方下拉列表中的"编写代码"按钮,选择…

0

商务应用程序中的常见验证规则

[原文发表地址]   Common Validation Rules in LightSwitch Business Applications [原文发表时间]   2011-11-11 7:45 AM 对于任何与人进行交互的应用程序(及其他系统)来说,尤其是商务应用程序,检查数据输入的有效性是一个常见的需求。我从来没有看到或写过一个数据输入的应用程序,在输入数据时没有使用常见的验证规则。LightSwitch通过数据设计器以及对自定义代码的支持可以用很多方式来执行声明的验证。字段(或属性)的验证仅仅只是LightSwitch 中编写商务规则的一个方面,但它绝对是重要的一个。它是让你保持用户输入的数据一致的"第一道防线"。 虽然LightSwitch 有一些内置的商业类型和声明性的验证设置,但很多时候我们需要编写一小段代码来查看界面上输入数据的格式。在美国常用到的是州、邮政编码、身份证号、UPIN码、ISBN等等。但是在人名或地方名或其他基于字符串操作规则的地方,您可能想要防止像数字型和符号的值。 在本篇博客中,我将为你们展示在LightSwitch中如何定义声明性的规则以及编写自定义的验证代码,我也会展示一些验证字符串时常用的样式。让我们开始吧! 声明性的验证规则 首先,我们来说说在无需编写任何代码的条件下,您可以声明哪些特定类型的验证。让我们来看一个用数据设计器设计的客户实体,它包含了以下字段: 必需的字段&商务类型 验证这些字段的第一步是确定它们的类型,以及哪些是必需的。LightSwitch将自动处理必需的字段和商务类型的验证。因此,您可以通过数据设计器以声明方式设置它们,而无需编写任何代码。内置的商务类型有电子邮件、电话、钱和图片,但这是可扩展的,所以您可以下载更多。在这个客户实体中,您可以注意到,我只要求姓氏是必填的。必需的字段在界面上以粗体显示,当它是空白时,它会阻止用户保存数据。 任何验证失败时,当用户把光标停在字段中或点击界面顶部的验证概要时,消息将会显示出来 请注意,在客户实体中,我为电话和电子邮件字段也选取了“电话号码”和“电子邮件”商务类型。商务类型是内置的验证,在属性窗口中您可以为它设置额外的属性来指示如何验证。对于电子邮件商务类型,您可以选择是否提供默认的电子邮件域以及是否必需域。 对于电话号码商务类型,您可以提供额外的验证格式以及以何种顺序验证: 指定字段的最大长度 另一个重要的声明性的验证规则是指定最大长度。默认情况下,所有字符串字段的最大长度为 255 个字符。这适用于大多数字段,因为它们有可变长度,而且对于我们的数据来说,255个字符有足够的空间了。然而SSN、州和邮政编码字段分别被限定为11、2、和10个字符的长度。任何超过这个长度的都不是有效数据。您可以在属性窗口的验证部分中指定最大长度。 使用唯一索引防止重复 您还可以在唯一索引中包含必需字段来防止重复。例如,如果我想在系统中防止相同的姓氏,我可以把它包含在唯一索引中。 说明:在表中将字段添加到唯一索引中是由数据库强制执行的。因此在数据被保存和在服务器端检查后,验证消息将会出现。在我的客户实体例子中,以这种方式限制重复并不是一个好的想法,客户拥有相同的姓氏是很常见的。您可能会考虑使用SSN,但是这样我们就不得不将它设置成为必需字段,只有拥有SSN的客户才可以进入系统。在这种情况下,限制性太强了,但是如果您想要阻止重复记录,唯一索引中包含的字段也可以为其他类型的数据实体工作 自定义验证规则 当您不能以声明的方式表达验证规则时,您需要编写一些代码。若要编写自定义验证代码,选择所需实体的属性,然后从下拉菜单中选择“编写代码”按钮,选择property_Validate方法: 这将会为方法打开代码编辑器,以编写自定义验证代码。当一个规则失败时,您可以使用results对象来添加错误消息: 1: Private Sub LastName_Validate(results As EntityValidationResultsBuilder) 2: ‘ Check the rule, if it fails then display an error message on the…

0