DatenModellierung Problem (Veranstaltung eines Vereins)

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 139 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Hi,
    anbei die Solution.
    Ich habe FirstName und Lastname ersetzt durch FullName, finde ich bei der Eingabe eines Organizer besser.

    Vielleicht gibts aber auch ne bessere Möglichkeit. Weil ein Organizer hat ja keinen Vornamen und Nachname.
    Oder ich müsste es allgemeiner halten mit Name1 und Name2 oder so.
    Dateien
    • Bazaar00.zip

      (1,69 kB, 42 mal heruntergeladen, zuletzt: )
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    Vielleicht gibts aber auch ne bessere Möglichkeit. Weil ein Organizer hat ja keinen Vornamen und Nachname.
    Oder ich müsste es allgemeiner halten mit Name1 und Name2 oder so.

    Im Grunde ist es egal, das Model sieht man nicht. Und wenn du Name1 und Name2 machst ist es schnuppe. DU musst wissen was was ist.
    Ich mache es meißt eben mit Vor und Nachname. Bei Firmen ist dann eben der Vorname der Firmenname und der Nachname der Titel ala "Firma GmbH".

    Was du wo einträgst bleibt dir überlassen und steuerst du ja im ViewModel/View. du kannst auch eine Firms immer nur Vorname verwenden. Dann darf hald Nachname kein Pflichtfeld sein.
    Wie DU es willst - wichtig ist nur..... du brauchst einen Plan, den Dokumentierst du besten im Code vom Model damit du es in drei Jahren auch noch weist.

    Ich schau mir das man an wenn ich dann daheim bin .

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Du @MichaHo da ist glaube ich was passiert. In den Projekten der Zip ist keine einzige Klasse drinnen. 8|

    Grüße
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ist irgendwie misteriös. Die Solution liegt auf meinem OneDrive und irgendwie will der SolutionExplorer von @ErfinderDesRades darin nichts finden...
    Hab das Projekt jetzt mal bereinigt und gezppt, nun sollte was drinn sein.
    Dateien
    • Bazaar.zip

      (36,86 kB, 44 mal heruntergeladen, zuletzt: )
    "Hier könnte Ihre Werbung stehen..."
    Hallo

    Sorry, ich komme heute nicht mehr dazu. So viel um die Ohren. Ich guck morgen dann mal drüber.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo

    Also, hatte kurz Zeit. Sieht ansich gut aus. Gewisse Dinge kristallisieren sich sowieso erst beim Anwenden raus. Aber so würde ich es schon fast übernehmen und auch EF Core sollte damit fast ohne zusätzliche Konfiguration auskommen. Ich denke lediglich bei der einen m:n Relation und bei den Properties welche "Unique" sein müssen werden wir nachhelfen müssen ja es dafür keine Annotation gibt.

    Dennoch habe ich ein paar kleinigekeiten gefunden die Probleme bereiten könnten. Aber nur winzige Sachen:

    Spoiler anzeigen

    C#-Quellcode

    1. //soll automatisch vergeben werden (Format: Sellernumber+fortlaufende Nummer)
    2. public virtual int ArticleNumber { get; set; }

    Guck mal hier: docs.microsoft.com/en-us/ef/co…ling/generated-properties
    Müssen wir dann konfigurieren.

    C#-Quellcode

    1. [Required(AllowEmptyStrings =false,ErrorMessage ="Preis muss angegeben werden!")]
    2. public virtual decimal Price { get; set; }

    Falsche Annotation da ein Decimal. Kann ja eh nicht null sein. MinValue und/oder MaxValue wäre besser

    C#-Quellcode

    1. //Defaultwert immer 1
    2. public virtual int Quantity { get; set; }

    Dann am besten im Konstruktor den Default Wert setzen da sonst Default 0 ist.

    C#-Quellcode

    1. public virtual int? PersonID { get; set; }

    Da ein Artikel IMMER einer Person zugeordnet sein soll (denke ich) ist hier nullable glaube ich nicht gut

    C#-Quellcode

    1. [Required(AllowEmptyStrings =false,ErrorMessage ="Sie müssen das Veranstaltungsdatum angeben.")]
    2. public DateTime EventDate { get; set; }

    Falsche Annotation da ein DataTime. Kann ja eh nicht null sein.

    C#-Quellcode

    1. public virtual int? OrganizerID { get; set; } //TODO Darf nicht nullable sein oder?
    2. public virtual PersonModel Organizer { get; set; }
    3. public virtual int? ResponsiblePersonID { get; set; } //TODO Darf nicht nullable sein oder?
    4. public virtual PersonModel ResponsiblePerson { get; set; }


    C#-Quellcode

    1. public class PersonEventModel
    2. {
    3. [Key]
    4. public virtual int ID { get; set; }
    5. public virtual int? PersonId { get; set; }
    6. public virtual PersonModel Person { get; set; }
    7. public virtual int? EventId { get; set; }
    8. public virtual EventModel Event { get; set; }
    9. }

    Es müssen hier immer Werte drinnen sein. Das ist die Zwischentabelle für die m:n Verknüpfung von Event zu Person
    Die IDs dürfen somit nicht Nullable sein

    C#-Quellcode

    1. [Required(AllowEmptyStrings =false,ErrorMessage ="Bitte geben sie einen Namen an")]
    2. [MinLength(10)] //TODO 10 Zeichen sind vielleicht viel
    3. [MaxLength(100)]
    4. public virtual string FullName { get; set; }

    Ich denke da gerade an Chinesische Namen.
    Oder "Ben Klein" geht sich schon nicht aus.

    C#-Quellcode

    1. public virtual int PostalCode { get; set; }

    Wenn INT, ist immer ein Wert enthalten. Per Default 0. evtl. besser als String sonst müsste Street und City auf Required werden


    So, genug genörgelt.
    Jetzt mal am besten auch in nem Extraprojekt (.Net Standard) den EF Context aufsetzen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hi Sascha,
    Danke Dir. Ändere ich ab.
    den Beitrag hab ich mir durchgelesen
    und setze dort die DataAnnotaions dann auf ​[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    mit dem EF Context guck ich mal ob ich es hin gefummelt bekomme.
    "Hier könnte Ihre Werbung stehen..."
    eine Frage noch Sascha, ich nutze das nuGet Paket Microsoft.EntityFrameworkCore oder das EntityFramework?
    ich denke EntityFramework weil es ja später auf nem Windows Server löäuft, richtig?
    "Hier könnte Ihre Werbung stehen..."
    Du wolltest MySQL oder? Obwohl ich fast sogar wenn es dann auf nem Windows Server laufen wird auf MS SQL (das der Provider von MS entwickelt wird) gehen würde aber das bleibt dir überlassen.

    MySQL Provider: nuget.org/packages/MySql.Data.EntityFrameworkCore
    MsSQL Provider: nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer

    Wenn du die Dependencys anguckst siehst du das mit dem installieren des Providers auch EF installiert wird. Also einfach den Provider rein gekloppt und gut.

    Grüße
    Sascha

    EDIT: Nimm aber ne Stable bitte.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Jetzt hardere ich grad wieder.... ach nee, fott ab, ich nehm SQL Server, kostet ja nicht allzuviel mehr.
    Muss nur mal schauen wie ich das mit der Domain hin bekomme, die VM läuft ja bei unserem Systemhaus im Rechenzentrum.
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    ich nehm SQL Server, kostet ja nicht allzuviel mehr.

    Kostet gar nix!!

    Bei fast allen Hostern sind 5 DBs dabei und bei eigenem Server kommt Express drauf und gut ists.
    Oder habt ihr da spezielle vorgaben??

    Für die Entwicklung und zum Probieren kann ich dir gerne meinen Server zur Verfügung stellen, ist nicht so schnell wie von einem Provider da ich nur 3 MBit Upload habe aber für die paar KB was da drüber gehen reichts ja zum probieren.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hi,
    zum testen kann ich auch einen von meinen Servern in der Firma nehmen.
    Brauch ja nen IIS und SQL Server.
    Hab noch keine Antwort auf meine Anfrage beim Systemhaus, chef ist glaub im Urlaub.
    Zur Not muss ich doch auf 1&1 umschwenken...
    Dein Angebot nehm ich aber auch gerne an.
    "Hier könnte Ihre Werbung stehen..."
    IIS hab ich auch =O
    Ich habe hier in meiner Wohnung einen Server 2012 R2 mit AD, IIS, MsSQL und MySQL.

    Wichtig ist im Moment aber eh nur die DB, das ist ja denke ich das erste was benötigt wird.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    ja, die wird benötigt... was ich noch austüfteln muss ist die Lizensierung und Aktiviwerung des Accounts um im Programm die Daten 1. zu vervollständigen und 2. die Verkäuferdaten herunter zu laden.
    Die Verkäufer sollen ja ihre Artikel selbst in die DB eintragen, am besten über Web.
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    Die Verkäufer sollen ja ihre Artikel selbst in die DB eintragen, am besten über Web.

    Meine Empfehlung: Asp.Net MVC, nicht das allerneueste aber relativ leicht zu verstehen und da gibt es enorm viel im Netz zu. (Finde ich)

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Sorry das ich hier nochmal reinplatze.

    Nofear23m schrieb:

    Langsam ist es dann auch soweit das du dich entscheiden solltest üb .Net Core und nicht. Also im Grunde ob es ein Linux Server werden wird auf dem EF Core laufen wird oder ein Windows Server. Wobei ich das Model und EF Core auf jeden Fall in .Net Code bzw. .Net Standard erstellen würde.


    Ich habe ein Premium Paket von All-Inkl.com. Dort habe ich die Möglichkeit bis zu 50 MySQL Datenbanken anzulegen. Zum Testen und üben reicht mir jedoch 1. :)
    Jetzt habe ich aber nirgends etwas gefunden auf welchem System das ganze bei denen läuft, Windows oder Linux.
    Du hast ja auch 2 verschiedene EF Versionen empfohlen, je nach Betriebssystem.
    Wie kann ich nun am besten vorgehen um mir selbst nicht noch mehr verwirrung zu stiften?? Im Lernprozess wäre das nicht lustig und frustriert.

    Grüße
    Sven
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.

    Akanel schrieb:

    Du hast ja auch 2 verschiedene EF Versionen empfohlen, je nach Betriebssystem.

    Meinst du das oben?

    Nofear23m schrieb:

    MySQL Provider: nuget.org/packages/MySql.Data.EntityFrameworkCore
    MsSQL Provider: nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer


    Das sind zwei verschiedene Provider. Bitte nicht verwechseln.

    EF Core ist Cross-Plattform fähig. Läuft auf Mac, Linux, Android, Windows, sogar am RaspberryPi. Da EF Core viele Datenbanken unterstützt wurde dies mit Providers implementiert.
    Je nachdem welchen Provider du einbindest kannst du MySQL, MS SQL, Oracle usw. verwenden.

    So wie ich das sehe bietet dein Provider nur Linux Server an, zumindest hätte ich nichts anderes auf deren Seiten gefunden. Aber wie gesagt. EF Core läuft auf Linux.
    Aber..... der MySQL Server von deinem Hoster wird von aussen nicht erreichbar sein. Du würdest also einen MS SQL Server benötigen.

    Grüße
    Sascha

    @MichaHo
    Wolltest du nun eigendlich direkt darauf zugreifen oder über ein Webservice. Das habe ich nun nicht mehr im Kopf. Wenn über Webservice dann kannst dir EF in diesem Projekt sparen.
    Brauchste dann nur für die Rest API, aber nicht für die WPF Anwendung.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hi Sascha,
    ganz ehrlich, ich weis es nicht.
    Es muss hinterher vom Ablauf her ungefähr so sein:
    Verein meldet sich, möchte das Programm nutzen.
    Ich erstelle einen Organizer mit Zugangsdaten und versende nen Link zum Download des Programms.
    Organizer (oder der Responsible) startet das Programm, gibt die erhaltenen Zugangsdaten ein, dadurch wird die Version aktiviert.
    Die Organizer Daten und Responsible Daten werden vervollständigt (Name, Strasse usw. plus neues Kennwort vergeben)
    Event wird erstellt und eine bestimmte Anzahl an Sellern wird erstellt (seller Nummer, plus Zugangsdaten)
    Seller logt sich online ein (mit den erhaltenen Zugangsdaten vom Responsible) und erstellt seine Artikel.
    Am Tag des Event oder ein Tag vorher läd der Responsible alle Daten einmal im Programm runter und erstellt die entsprechende Anzahl an Kassen die benötigt werden.
    Ab dann muss alles offline von statten gehen. Nach dem Event läd der Responsible die Daten wieder hoch und die Seller können ihren Umsatz einsehen, ausdrucken what ever.

    Edit: Aufgrund dessen, das eine Lizenz dahinter hängt (free, light, pro, unlimited) wäre es villeicht klug, die meiste Logik nicht im Programm zu haben, oder?
    "Hier könnte Ihre Werbung stehen..."