Freigeben über


Gewusst wie: Überprüfen von Daten

Sie können Validierungsregeln auf eine Entität oder Tabelle anwenden, um sicherzustellen, dass ordnungsgemäß formatierte Daten in die Datenquelle geschrieben werden.Eine Validierungsregel ist eine Bedingung oder Einschränkung, die die Daten in der Anwendung erfüllen müssen.Sie können einer Entität oder Tabelle in LightSwitch eine oder mehrere Validierungsregeln hinzufügen.Wenn ein Benutzer Daten hinzufügt oder ändert und die Daten die Validierungsregeln nicht erfüllen, wird in LightSwitch ein Fehler angezeigt.Bevor der Benutzer einen Commit der Daten ausführen kann, muss der Validierungsfehler behoben werden.

Die folgende Abbildung zeigt eine Fehlermeldung für einen Validierungsfehler.

Validierungsfehlermeldung

LightSwitch enthält mehrere integrierte Validierungsregeln.Sie können diese Regeln konfigurieren und auf eine Entität oder Tabelle anwenden, ohne dafür Code schreiben zu müssen.Sie können auch Code verwenden, um benutzerdefinierte Validierungsregeln zu definieren.

Dieses Thema enthält folgende Abschnitte:

  • Anwenden von vordefinierten Validierungsregeln auf ein Feld

  • Anwenden von benutzerdefinierten Validierungsregeln auf ein Feld

  • Anwenden von benutzerdefinierten Validierungsregeln auf Daten in einem Bildschirm

  • Anwenden von Validierungsregeln, die ausgeführt werden, wenn Daten gespeichert werden

Link zu Video Ein entsprechendes Demovideo finden Sie unter Gewusst wie: Schreiben von Geschäftsregeln für die Validierung und berechnete Felder in einer LightSwitch-Anwendung(möglicherweise in englischer Sprache).

Anwenden von vordefinierten Validierungsregeln auf ein Feld

LightSwitch enthält mehrere integrierte Validierungsregeln, die Sie verwenden können, ohne benutzerdefinierten Code zu schreiben.Sie können diese Regeln auf einzelne Datenfelder oder eine beliebige Art einer Aktualisierung anwenden, die Benutzer an Daten in einem Bildschirm vornehmen.

So wenden Sie eine vordefinierte Validierungsregel auf ein Feld an

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Entität oder Tabelle, auf die Sie Validierungsregeln anwenden möchten.

    Die Entität bzw. die Tabelle wird im Daten-Designer geöffnet.

  2. Wählen Sie im Daten-Designer das Feld aus, das Sie überprüfen möchten.

  3. Legen Sie im Eigenschaftenfenster im Abschnitt Validierung den Wert beliebiger Eigenschaften fest.

    Informationen zu Validierungseigenschaften finden Sie unter Erläuterung: Daten-Designer-Eigenschaften.

Anwenden von benutzerdefinierten Validierungsregeln auf ein Feld

Sie können benutzerdefinierte Validierungsregeln definieren, indem Sie Code schreiben.Sie können angeben, wann diese Validierungsregeln von LightSwitch erzwungen werden sollen.Sie können z. B. angeben, dass eine Validierungsregel in einem Feld sofort erzwungen wird, nachdem ein Benutzer einen Wert eingegeben hat.Alternativ können Sie angeben, dass eine Entität oder eine Tabelle nur ausgewertet wird, nachdem alle ihre Felder einen Wert enthalten.Dieses Modell ist sinnvoll, wenn die Gültigkeit eines Werts in einem Feld von einem gültigen Wert in einem anderen Feld in der gleichen Entität oder Tabelle abhängt.

So wenden Sie eine benutzerdefinierte Validierungsregel auf ein Feld an

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Entität oder Tabelle, auf die Sie Validierungsregeln anwenden möchten.

    Die Entität bzw. die Tabelle wird im Daten-Designer geöffnet.

  2. Wählen Sie im Daten-Designer das Feld aus, das Sie überprüfen möchten.

  3. Klicken Sie im Eigenschaftenfenster auf Benutzerdefinierte Validierung.

    Der Code-Editor wird geöffnet und generiert die Feldname[_Validate]-Methode.

  4. Fügen Sie der Feldname[_Validate]-Methode Validierungscode hinzu.

    Um eine Validierungsregel sofort zu erzwingen, nachdem ein Benutzer einen Feldwert angibt, rufen Sie die AddPropertyError-Methode des Parameters results auf.

    Im folgenden Beispiel wird eine Validierungsmeldung angezeigt, nachdem ein Benutzer das Feld ShippedDate der Order-Entität auf ein Datum festgelegt hat, das nach dem Datum von "Heute" liegt.

    Private Sub ShippedDate_Validate(results As EntityValidationResultsBuilder)
        If Me.ShippedDate > DateTime.Today Then
            results.AddPropertyError _
                ("Shipped date cannot be later than today")
        End If
    
    End Sub
    
    partial void ShippedDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.ShippedDate > DateTime.Today)
        {
            results.AddPropertyError("Shipped date cannot be later than today");
        }
    
    }
    

    Beachten Sie, dass Sie andere Eigenschaften zur Validierung hervorheben können.Sie können z. B. Validierungscode schreiben, der ausgeführt wird, wenn ein Benutzer die Postleitzahl eines Kunden ändert.Wenn Sie die City-Eigenschaft als Parameter an die AddPropertyError-Methode übergeben, hebt LightSwitch das Feld City hervor.Im Text der Validierungsfehlermeldung kann der Benutzer z. B. aufgefordert werden, den Namen eines Orts einzugeben, der der neuen Postleitzahl entspricht.

    HinweisHinweis

    Updates können standardmäßig erst an eine Datenquelle übergeben werden, wenn sie den Validierungsregeln entsprechen.Wenn Sie es Benutzern ermöglichen möchten, einen Commit für nicht ausgewertete Updates auszuführen, verwenden Sie anstelle der AddPropertyError-Methode die AddPropertyResult-Methode.Für den zweiten Parameter der AddPropertyResult-Methode übergeben Sie entweder ValidationSeverity.Informational oder ValidationSeverity.Warning.

    Um eine Validierungsregel für eine Entität oder Tabelle zu erzwingen, z. B. wenn ein Benutzer einen Wert in einem Feld ändert, das von einem gültigen Wert in einem anderen Feld abhängt, rufen Sie die AddEntityError-Methode des Parameters results auf.Im folgenden Beispiel wird der Wert des Felds RequiredDate mit dem Wert des Felds OrderDate verglichen.Wenn das Bestelldatum nach dem erforderlichen Datum liegt, wird mit diesem Code eine Validierungsfehlermeldung angezeigt.

    Private Sub RequiredDate_Validate(results As EntityValidationResultsBuilder)
        If Me.RequiredDate < Me.OrderDate Then
            results.AddEntityError _
                ("Required data cannot be earlier than the order date")
        End If
    
    End Sub
    
    partial void RequiredDate_Validate(EntityValidationResultsBuilder results)
    {
        if (this.RequiredDate < this.OrderDate)
        {
            results.AddEntityError
                ("Required data cannot be earlier than the order date"); 
        }
    
    }
    

Anwenden von benutzerdefinierten Validierungsregeln auf Daten in einem Bildschirm

Sie können benutzerdefinierte Validierungsregeln angeben, die für einen ganzen Bildschirm gelten, indem Sie der <Entitäts- oder Tabellenname>[_Validate]-Methode in der Bildschirmcodedatei benutzerdefinierten Code hinzufügen.Der benutzerdefinierte Code wird ausgeführt, wenn ein Benutzer im Bildschirm beliebige Daten ändert (z. B. Daten hinzufügt oder löscht).Diese Regeln werden ausgeführt, bevor die Daten gespeichert werden können.

So wenden Sie eine benutzerdefinierte Validierungsregel auf Daten in einem Bildschirm an

  1. Doppelklicken Sie im Projektmappen-Explorer auf den Bildschirm, für den Sie eine Validierungsregel angeben möchten.

  2. Klicken Sie oben im Bildschirm-Designer auf Code schreiben.

    Der Code-Editor wird geöffnet.

  3. Wählen Sie im Menü Deklarationen die Option <Entitäts- oder Tabellenname>[_Validate] aus.

    Ein Codeblock mit dem Namen <Entitäts- oder Tabellenname>[_Validate] wird in der Codedatei angezeigt.

  4. Fügen Sie der <Entitäts- oder Tabellenname>[_Validate]-Methode den benutzerdefinierten Validierungscode hinzu.

    Um eine Validierungsregel zu erzwingen, nachdem ein Benutzer eine Datenzeile hinzugefügt, gelöscht oder aktualisiert hat, rufen Sie die AddScreenError-Methode des Parameters results auf.

    Im folgenden Beispiel wird das Löschen von Kunden verhindert, die sich in den USA befinden.

    Private Sub Customers_Validate _
        (results As Microsoft.LightSwitch.Framework.Client.ScreenValidationResultsBuilder)
        If Me.DataWorkspace.NorthwindData.Details.HasChanges Then
            Dim changeSet As EntityChangeSet = _
                Me.DataWorkspace.NorthwindData.Details.GetChanges()
    
            Dim entity As IEntityObject
    
            For Each entity In changeSet.DeletedEntities.OfType(Of Customer)()
    
                Dim cust As Customer = CType(entity, Customer)
                If cust.Country = "USA" Then
                    entity.Details.DiscardChanges()
                    results.AddScreenResult("Unable to remove this customer." & _
                        "Cannot delete customers that are located in the USA.", _
                         ValidationSeverity.Informational)
                End If
    
            Next
        End If
    
    End Sub
    
    partial void Customers_Validate(ScreenValidationResultsBuilder results)
    {
        if (this.DataWorkspace.NorthwindData.Details.HasChanges)
        {
            EntityChangeSet changeSet =
            this.DataWorkspace.NorthwindData.Details.GetChanges();
            foreach (IEntityObject entity in changeSet.DeletedEntities.OfType<Customer>())
            {
                Customer cust = (Customer)entity;
                if (cust.Country == "USA")
                {
                    entity.Details.DiscardChanges();
                    results.AddScreenResult("Unable to remove this customer. " +
                    "Cannot delete customers that are located in the USA.",
                    ValidationSeverity.Informational);
                }
            }
        }
    
    }
    
    HinweisHinweis

    Updates können standardmäßig erst an eine Datenquelle übergeben werden, wenn sie den Validierungsregeln entsprechen.Wenn Sie es Benutzern ermöglichen möchten, einen Commit für nicht ausgewertete Updates auszuführen, verwenden Sie anstelle der AddScreenError-Methode die AddScreenResult-Methode.Für den zweiten Parameter der AddScreenResult-Methode übergeben Sie entweder ValidationSeverity.Informational oder ValidationSeverity.Warning.

Anwenden von Validierungsregeln, die ausgeführt werden, wenn Daten gespeichert werden

Sie können benutzerdefinierte Validierungsregeln anwenden, wenn ein Benutzer Daten speichert oder wenn im Code die SaveChanges-Methode einer Datenquelle aufgerufen wird.Diese Art von Validierung wird ausschließlich auf der Serverebene ausgeführt.

So wenden Sie Validierungsregeln an, die ausgeführt werden, wenn Daten gespeichert werden

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Entität oder Tabelle, auf die Sie Validierungsregeln anwenden möchten.

  2. Klicken Sie im Daten-Designer in der Befehlsleiste auf den Pfeil neben der Schaltfläche Code schreiben und dann auf Entitäts- oder Tabellenname[_Validate].

    Der Code-Editor wird geöffnet und generiert die Entitäts- oder Tabellenname[_Validate]-Methode.

  3. Fügen Sie der Entitäts- oder Tabellenname[_Validate]-Methode den benutzerdefinierten Validierungscode hinzu.

    Rufen Sie die AddEntityError-Methode des Parameters results auf.

    Im folgenden Beispiel wird der Kreditstatus eines Kunden überprüft, wenn ein Benutzer einen Auftrag speichert.Wenn der Kredit des Kunden noch nicht von der Finanzierungsabteilung genehmigt wurde, wird eine ValidationException ausgelöst.

    Private Sub Orders_Validate _
        (entity As Order, results As  _
         Microsoft.LightSwitch.EntitySetValidationResultsBuilder)
        If Not CustomerCreditApproval(entity.Customer) Then
            results.AddEntityError("Customer Credit has not yet been approved")
        End If
    
    End Sub
    Private Function CustomerCreditApproval(ByVal entity As Customer) As Boolean
        'Some custom code to check the customer’s credit status.
        Return True
    
    End Function
    
            partial void Orders_Validate
                (Order entity, EntitySetValidationResultsBuilder results)
            {
                if (!CustomerCreditApproval(entity.Customer))
                {
                    results.AddEntityError
                        ("Customer Credit has not yet been approved");
                }
            }
    
            private bool CustomerCreditApproval(Customer entity)
            {
                //Some custom code to check the customer's credit status.
                return true;
            }
    
    
    HinweisHinweis

    Wenn die Ausnahme ausgelöst wird, wird standardmäßig eine Fehlermeldung angezeigt, und die Daten verbleiben im aktuellen Changeset.Wenn Sie dieses Verhalten ändern möchten, können Sie ValidationException im Code behandeln.

Siehe auch

Aufgaben

Gewusst wie: Behandlung von Datenereignissen

Gewusst wie: Definieren von Datenfeldern

Konzepte

Ausführen datenbezogener Aufgaben mithilfe von Code

Arbeiten mit datenbezogenen Objekten im Code

Schreiben von Code in LightSwitch

Weitere Ressourcen

Übersicht über die Datenvalidierung in LightSwitch-Anwendungen

Daten: Die der Anwendung zugrunde liegenden Informationen