3 Stimmen

Entity Framework + Validierungsannotationen

Ich möchte eine Validierungshinweis benutzen. Ich habe bereits ein Modell implementiert von Entity Framework. Ich brauche Datenvalidierung und ich weiß, dass es eine Datenanotation gibt, die sehr schön ist... Aber ich weiß wirklich nicht, wie ich sie richtig mit dem Entity Framework benutzen kann.

Soll ich Entitäten bearbeiten? Oder soll ich eine separate Klasse schreiben? Oder soll ich Klassen schreiben, die von Entitäten erben?

Können Sie mir den besten Weg sagen, den ich verwenden sollte?

Ich möchte so wenig Code schreiben, wie es möglich ist.

1 Stimmen

Welche Art von Validierung möchten Sie hinzufügen? Können Sie uns etwas Klassencode zeigen?

14voto

Michael Edenfield Punkte 27684

Der Weg, dies zu handhaben, besteht aus einer Kombination von Teilklassen und einem speziellen Attribut, das es Ihnen ermöglicht, Metadaten an eine andere Klasse anzuhängen.

Das Entity Framework hilft Ihnen hier bereits weiter, indem es alle Klassen als Teilklassen generiert. Wenn Sie also eine Entität in Ihrem Modell namens Einstellungen haben, würde das EF dies erstellen:

public partial class Setting : INotifyPropertyChanging, INotifyPropertyChanged
{
    // Auto-gen Eigenschaften, Methoden usw. kommen hierher.
}

Dies bedeutet, dass Sie beliebig viele andere partial class Setting-Fragments in anderen Dateien haben können, die das EF nicht berühren wird, wenn/wenn Sie diesen Code neu generieren. Wenn Sie Validierungsattribute zu diesem hinzufügen möchten, sind zwei Schritte erforderlich:

  1. Fügen Sie der Setting-Klasse ein MetadataType-Attribut hinzu. Im Body dieses Teilklasse-Fragments muss nichts vorhanden sein, es dient nur dazu, das Attribut zu verknüpfen.

    [MetadataType(typeof(SettingMetadata))]   
    public partial class Setting
    {
    }
  2. Erstellen Sie eine zweite Klasse, die die gleichen öffentlichen Feldnamen wie die EF-Klasse hat, und verknüpfen Sie beliebige Dateneingabeattribute. Der Compiler gleicht die Felder der Metadatenklasse mit den Feldern der EF-Klasse nach Namen ab und verhält sich so, als ob alle Metadaten, die Ihrer zweiten Klasse angefügt sind, auch in Ihrer ersten Klasse vorhanden wären.

    public class SettingMetadata
    {
        [Display(Name="Basiszinssatz")]
        [Erforderlich]
        public decimal Rate
        {
            get;
            set;
        }
    
        [Display(Name = "Erlaubniszahlungen")]
        public Boolean AllowPayments
        {
            get;
            set;
        }
    
        [Display(Name = "Basis-URL für Webdienst")]
        [Erforderlich]
        [SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Typ muss mit verknüpftem Metadatentyp übereinstimmen.")]
        public string WebServiceUrl
        {
            get;
            set;
        }
    }

Wie in der FxCop-Unterdrückungsnachricht erwähnt, müssen der Name und der Typ der Felder zwischen der Metadatenklasse und der zugehörigen Klasse übereinstimmen, damit dies funktioniert.

2voto

MNIK Punkte 1551

Datenannotationen sind Validatorattribute, die Sie zu den Eigenschaften der Entität hinzufügen müssen. Es gibt eine Anzahl von Standardattributen oder Sie können benutzerdefinierte erstellen, wenn sie Ihren Anforderungen nicht entsprechen.

Überprüfen Sie diesen Link.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X