验证实体(数据集)中LightSwitch集合_第1页
验证实体(数据集)中LightSwitch集合_第2页
验证实体(数据集)中LightSwitch集合_第3页
验证实体(数据集)中LightSwitch集合_第4页
验证实体(数据集)中LightSwitch集合_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、验证实体(数据集)中 Lightswitch集合5验证实体(数据集)Lightswitch 集合Validat ing Collecti ons of En tities (Setsof Data) in LightSwitch建设n层应用程序的许多富有挑战性的事情之一设计验证系统,它允许客户端和服务器上运行的规则和将消息发送回客户端上显示它们。已落户我时间的几个应用程序框架,所以我知道这是如何棘手。过去已经花时间挖成的验证框架,LightSwitch,并不得不说让我印象深刻。LightSwitch很容易地写在一个地方的业务规则,并让它们运行适当的层中。Prem写了一大篇,详述他寄了Light

2、Switch团队博客昨天,我强烈建议您先阅读的验证框架:LightSwitch应用程序中的数据验证概述。大多数您编写的验证规则是要在客户端和服务器(中间层 )上运行,与LightSwitch不会很好地处理,为您的规则。例如当你穿上实体属性的有效性规则本规则将第一个运行在客户端上。如果错误必须纠正数据之前,可以将其保存到中间层。这为用户提供直接的反应,但也使应用规模更因为你不会不必要地打扰中间层。一旦验证通过在客户端上,它就是中间层上再次运行。构建中间层时,这是最佳实践永远不要以为进来的数据有效。验证设置(或收藏)的数据,可以获得非常棘手。通常要验证在客户端上一组第一但当时你有再做一对中间层,不

3、只是因为您不信任的客户端,但也因为数据集可以更改在多用户环境中。您需要更改集的数据来自客户端,将其存储在数据库中,数据的一组与合并,然后进行验证。处理更改集和合并自己能有时相当棘手。首先我并没有意识到什么是LightSwitch还为您处理此。示例防止重复让我们看当时正在这个星期的示例。我有典型的OrderHeader-vOrderDetails 一 产品数据模型。我想要确保没有重复的产品在任何给定的顺序上的OrderDetail线项目选择的规则。因此,如果用户输入相同的产品订单上的两次,验证应该会失败。在这里,我得让我编辑所选客户的所有订单的订单屏幕。对于每个订 单我不应超过一次输入相同的产品

4、:CMfrieAddDsJ 鼻也 Ajg freshJ /T 匸心网 OnientcjDrt to Excel Igised Cart.OidnTeUftefrehExport W Esseiliana 厨McePtodurtLnelMn Totalse.oogM$;=30rj5$”30pLi 底 feTi-ni_Jof 1 H规则在哪里?您可以编写实体属性(字段)的xxx_Validate方法中的规则和实体本身。从实体设计器选择的属性的名称,常Product Validate 和然后单击下拉列表中的可用方法写代码按钮旁边的箭头。属性方法将显示所选属性。实体方法是根据 规方法-。在我的示例中,

5、如果您选择的产品属性和下拉列表的方法你会看到OrderDetailSValidate 的两种验证方法。* Ntw TaLlc Attich to Xc no I Cbm Source 匡)WiDc 匚 cd=-ProfWflyP rudjtlC bungedP Fod jct卫 F ead Dn IProddt_Vai(dateGener-al MhodsDrdeDtlai; AltwSaveWithEfTorsOrderDetailNaFPPiypir;LjInt32PgMsneyP PZiLKtProduct1OfTmH 心 rOrdcfOctaiLC reaped idffDetaife

6、_Lelet1 OndcruminaStringOdeDetfl i 匕工上 IOdDcldifeJnse- LiriOdeDeta i t_Lpdated 旳mg -g 迥&*dcrDctj 1呂_為 I i drfcSecurfty JM ethodsOdedJeU i t CanDtl etcJ LintenilcitfllManeyOndefOeta i is.Cjri; ns#nOdo-Delfli CanRcod属性方法更改为您在设计器中选择一个实体的属性(域),但一般方法始终显示您正在使用的实体。属性_Validate方法运行两个客户端上,然后再对中间层。实体Validate方法

7、运行在服务器上,这些称为DataService 验证。我的订单项方案中是我先忍不住要在DataService 中编写代码,在 OrderHeader实体,并检查有订单明细的集合。当我选择实体设计器中的OrderHeader实体,单击-写入代码按钮,旁边的箭头,然后选择AppIicationDataService类中生成方法存根(stub)。这是我在想我可以验证我的订单明细的组,并返回错误,如果有重复。OrderHeaderSValidate 时,我在Public ClassApp licati on DataServicePrivate SubByValresults Dim isValid

8、=OrderHeaders_Validate( ByVale ntity As OrderHeader, As En titySetValidatio nResultsBuilder)FalseWrite code to validate en tity.OrderDetails collecti onIf Not isValid Thenresults.Add Prop ertyError(There are dup licated p roducts on the orderEnd IfEnd SubEnd Class不过我很快就意识到 这不工作,因为OrderHeader实体将需要更改此

9、火的验证。如果用户编辑当前命令行项目(订单明细)然后仅为OrderDetail的验证将火,不是 OrderHeader。将我的规则放在AppI icationDataService类中的另一个问题是用户将不得不之前将触发规则,我们会有不必要的往返,中间层,单击保存。我们希望能够首先检查此设置在客户端上的问题。另一个问题是,如果发现了一个错误,然后只订单上的常规验证消息将显示给用户。他们要盯着屏幕,找出问题。我认为为什么去了这条路线放在第一位是因为想着我所需要的合并设置来自客户端的数据库中的数据集的更改,然后验证的原因。原来LightSwitch 为您处理此。 当您要验证的客户端上的数据(实体集

10、合)的一组时,您要验证用户的屏幕上的什么。当在服务器上运行的验证您要验证合并的数据集。好!(请注意您仍然可以访问更改集通过DataWorks pace 对象,但我们将深入探究,在未来的一篇文章。写入此规则的正确方法因为LightSwitch做所有重型起重我此规则获取很容易实现。因为我们正在检查每个OrderDetail重复产品,我们需要将代码放在 Product_Validate 方法中的OrderDetail实体(见上面)。现在我们可以编写简单的LINQ查询,以检查有重复。验证实体(数据集)中Lightswitch集合Public Class OrderDetailPrivate Sub P

11、 roduct_Validate( ByValresults AsEn tityValidatio nResultsBuilder)If Me .Product IsNot Nothing Then Look at all the OrderDetails that:1) have a p roduct sp ecified (detail .P roductIsNot Nothi ng)2) have the same p roduct ID as this en tity(detail. Product.ld = Me. Product.ld)3) is not this en tity

12、(detail IsNot Me)detail .P roductd =Dim dupes = Fromdetail In Me .OrderHeader.OrderDetails Where detail. Product IsNot Noth ing An dAlsoMeP roduct.Id An dAlso detail IsNot Me If Count is greater tha n zero the n we found a dup licateIf dupes.Count 0 Thenresults.Add Prop ertyError(MeP roduct. Product

13、Name + is a dup licateproduct)End IfEnd IfEnd SubEnd Class我们添加或更新订单上的每个行项目的情况下,将触发此验证。它将首先在客户端上的很快就会触发和Me.OrderHeader.OrderDetails将在屏幕上显示的行项的集合。如果在客户端上,此规则将通过验证然后它会激发对中间层和Me.OrderHeader.OrderDetails将派从客户端与服务器上的数据合并的行项的集合。这 意味着,如果另一个用户已修改订单,我们仍可以正确验证此数据集上的行项目。此外请注意,当我们指定的错误消息,它已连接到OrderDetail实体上的产品属性,以便当用户单击验证在摘要中的消息,突出显 示屏幕顶部的正确的网格中的行。验证实体(数据集)中 Lightswitch集合/ CustorncrDrtfl!y CjccrrtfUREI H可hSflti歸wi?hi IK ffcniv 貫祈弋戶 CkE吃血厂 hr 币的戸 lirlm sj(pctt CO Eilje

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论