none
MVC C# DataAnnotations in Model beibehalten RRS feed

Alle Antworten

  • Hallo Roland,

    Du kannst die DataAnnotations Definition über eine MetadataTypeAttribute Class in eine separate Code Datei auslagern.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Samstag, 15. Dezember 2018 07:06
  • Hi Roland,
    mir ist nicht bekannt, woher die DataAnnotations kommen sollen, wenn man die Klasse neu erstellt (d.h. löscht und neu anlegt). Ich verstehe auch nicht, warum man so etwas benötigt. Die Datenklasse beschreibt Datenobjekte im Geschäftsprozess. Die Breite (Anzahl der Eigenschaften) und Tiefe (Anzahl der Datenobjekte) innerhalb der Anwendung betreffen nur Teile des Inhaltes der externen Datenbank. Außerdem bedeutet jede Änderung der Datenklasse eine oft umfangreiche Überarbeitung des gesamten Projektes, da Bezeichner nach einer Aktualisierung der Datenklasse entfallen, hinzukommen und auch von einem anderen Typ sein können. Wenn die Notwendigkeit besteht, das Datenmodel zu ändern, so ist das üblicherweise das Ergebnis einer Änderung des zu implementierenden Geschäftsmodels. Aus den neuen Anforderungen an den Geschäftsprozess wird das neue Datenmodell abgeleitet, dann ggf. die Datenbank geändert, dann die Datenklassen geändert und zum Schluss die neue Geschäftslogik implementiert. Falls die Änderungen jedoch aus Änderungen in der Datenbank resultieren, weil die Datenbank auch in anderen Geschäftsprozessen genutzt wird, dann sind nach meiner Erfahrung die Änderungen in den Datenklassen so gering, dass dieser Aufwand vernachlässigbar gegenüber dem Aufwand ist, der danach noch für die Implementierung aller weitere3n Änderungen erforderlich ist.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Samstag, 15. Dezember 2018 08:00
  • Hallo Peter,

    es muss ja nicht immer gleich ein kpl. Änderung sein. Manchmal kommt auch einfach nur ein Tabelle hinzu die neue Funktionen ermöglicht.  ZB. Das Speichern von Dokumenten zu einem Vorgang.

    Wenn man einen neun Controller anlegt und dazu MVC 5 -Controllermit Ansichten unter Verwendung von EntityFramework benutz, dann sie die View so aus.

    Beispiel :

     <dt>
                @Html.DisplayNameFor(model => model.DEB_KDNr)
            </dt>
    
            <dd>
                @Html.DisplayFor(model => model.DEB_KDNr)
            </dd>

    und dann wird ja genau der Display Name ausgegeben. Das ist doch ganz praktisch oder nicht.

    Wie machst Du das mit der Beschreibung der Ausgabe oder Eingabefelder in der Maske.


    Gruß Roland

    Sonntag, 16. Dezember 2018 17:11
  • Hallo Olaf,

    Danke für die Info.

    Hast Du dazu ein Beispiel wie man dann die Beschriftung in einer Maske zu dem Feld machen kann ?


    Gruß Roland

    Sonntag, 16. Dezember 2018 17:12
  • Hi Roland,
    ich nutze die Erzeugung des Models aus der Datenbank praktisch nicht. Ich erzeuge selbst die Datenklassen für das Datenmodell, welches ich in der Anwendung benötige. Dabei achte ich lediglich auf die Bezeichner der Klassen und Eigenschaften. Die Datenklassen im Projekt haben ja nur einen Bruchteil dessen, was in der Datenbank liegt. Warum soll ich mir über den Automatismus alles reinholen? Wenn ich jetzt 5 Datenklassen mit jeweils 10 Eigenschaften erstelle, benötige ich ca. 1 h. Eine neue Datenklasse zu erstellen, dauert auch nur wenig Zeit im Verhältnis zur Nutzung der Eigenschaften inn der Logik und Oberfläche. Wenn ich die Datenklasse erstelle, füge ich auch gleich die Displaynamen und weiteren Attribute hinzu.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks


    Sonntag, 16. Dezember 2018 17:47
  • Hi Olaf

    hast Du ein Beispiel wie das geht ?

    Danke.


    Gruß Roland

    Donnerstag, 20. Dezember 2018 15:40
  • Hi,
    das interessiert mich auch, wie man MetadataType in net.core 2.2 integriert.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Freitag, 21. Dezember 2018 21:39