MVVM OpenSource Communityprojekt - HomeStorage

  • WPF

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

    Hallo @Amro

    Starte Visual Studio Installer. Dort gehst du auf "Einzelne Komponenten".
    Stelle sicher das mindestens .Net Framework 4.6.1 installiert ist. Dort ist .NET Standard enthalten. Anbei ein Screenshot.

    Grüße
    Sascha
    Bilder
    • VS.PNG

      64,37 kB, 916×601, 37 mal angesehen
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    So Leute.

    Habe heute ein wenig mehr ins Model gepackt so das wir denke ich mit den nächsten Schritten weitermachen können damit wir voran kommen.
    Ich habe nun die Lager und Lagerort optimiert durch einfügen einer Zwischentabelle. Wenn ich mich nicht irre sollte dies nun bereits die 2. Normalform darstellen.

    Bez. Haltbarkeitsdatum - Da hat sich von eurer Seite nicht viel getan in Punkto Ideen - OK, war gemein. Da gibt es keine einfache Lösung.
    Da ich letztes Jahr bereits länge an einem solchen problem gesessen bin weis ich das zufällig. Zumindest bin ich zu keine "guten" Lösung gekommen.

    Selbst wenn ich sagen würde das ich jetzt 3 Packungen Reis habe und diese zubuche mit den MHD xyz. bringt das nix. Wer sagt denn das wenn ich eine Packung Reis abscanne oder manuell ausbuche welche Packung das ist.
    Ist es die mit dem spätesten MDH oder mit dem frühestem. Ausserdem müsste ich nach dem Kauf von 20 Packungen jede einzelne ansehen und das MHD eingeben. Alles vergebens wenn jemand dann die falsche aus dem Regal nimmt.
    Ne. Man markiert den Artikel als Artikel mit MHD (Ein Boolean Property). So weis das System das es ein Artikel ist welches ein MHD hat und warnt das man bitte das "älteste" nehmen soll. Das einzig sinnvolle.

    So, weiters habe ich eine Klasse für Settings gemacht, brauchen wir früher oder später ja auch. Hier bin ich auf die fragen schon gespannt.
    Ansonsten gehts dann als nächstes mit dem EF Core Context weiter.

    Hier der Commit: github.com/NoFear23m/HomeStora…ec7dfbd3db02f7fe1cc262da7

    Grüße
    Sascha
    Bilder
    • Model.png

      111,67 kB, 1.651×818, 41 mal angesehen
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Hallo @MichaHo, ich bin jetzt mit Git auch nicht so Fit das ich das auswendig weis.
    Ich denke du musst einen Clean durchführen und dann Syncen.
    Oder derweil - neu Forken.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Die Anleitungen, die ich gefunden habe, haben leider nicht funktioniert, weil ich ja Changes gemacht hatte, die aber Konflikte verursachen...
    Habs daher neu geforked und diesmal auch komplett über GitHub Desktop geclont, nicht über VisualSVN...

    Schreibst Du hier noch Erklärungen zu den Settings, Attachments usw.?
    "Hier könnte Ihre Werbung stehen..."
    OK, gehen wir es langsam an. Welche VS Version hast du genau?
    Dann Poste bitte ein Bild von den Installierten .Net komponenten wie ich es getan habe.

    Ich musste NIE etwas von ausserhalb installieren um .NET Stadnard unterstützung zu erhalten. Alles rein mit VS und deren installer.

    Edit: @MichaHo - Was hast du genau für fragen. Ich mache es bei diesem Projekt jetzt nicht so das ich jeden kleinen Schritt beschreibe, da werde ich nicht fertig. Stellt eure Frage was euch nicht klar ist und ich beantworte diese. Denkt dran, es gibt keine dummen fragen, nur dumme Antworten.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Wenn ihr probleme habt mit den .NET Standard kann ich die Projekte gerne auf das Full .NET 4.6 umstellen, man kann das ViewModel und das Model dann eben nicht für Mobile Anwendungen wiederverwenden, wenn euch das nicht stört können wir das machen. Ihr entscheidet. Ich stelle gerne um! Für das lernen von MVVM ist es unerheblich!!

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Nein.
    Es scheint jetzt zu Funktionieren.
    1. Visual Studio 2017 Update
    2. Net Framework 4.6.2 gesondert Installiert (da nicht im VS Installer)
    3. Net Core 2.0 mit dem VS Installer nachinstalliert
    Danach war das Net FW 2.0 in Projekteigenschafte auswählbar, bzw wurde es bei Klonen / Foken in VisualStudio 2017 erkannt. Abhängignkeiten im Projektmappenexplorer sind jetzt auch ohne Warnmeldung.
    Envoiremen.Username wird nicht mehr untergringelt :thumbup:
    Das Projekt läst sich jetzt Fehlerfrei Starten (Startprojekt HomeStorage.App)

    Danke für eure Hilfe

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Amro“ ()

    OK, das ist gut. Möchte aber dennoch hinzufügen das ich es selbst nicht noch(!!) nicht probiert habe ein ViewModel in .NET Standard zu erstellen.
    Hatte es mal in solch einer Strutktur, es aber dann wieder abgeändert weil....
    Da EF Core oder besser .Net Core hier einiges noch nicht implementiert hatte ich probleme mit einige Abfragen wo der SQL nicht korrekt von LINQ übersetzt wurde. Ich hatte damals auch ein Issue bei GitHub im EF Core Projekt eröffnet.

    Dieses wurde auch gefixt habe es dann allerdings noch nicht nochmals probiert. Hatte damals auch diverse Tests gemacht um der Sache auf den Grund zu gehen.

    Wir werden es ja sehen ;)

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

    Eigenen Fork auf Original Zustand updaten

    Wenn man die Repository forked und diese dann auf seinen PC cloned, sollte man den Original Ursprung als Remote hinzufügen:

    git remote add upstream https://github.com/NoFear23m/HomeStorage.git

    Wenn dann die Original Repository ihren Zustand ändert (commits hinzugefügt etc.) können mittels:
    git fetch upstream

    die Änderungen abgerufen werden. Somit weiß die lokale Repository jetzt, dass Änderungen in der Original-Repository verfügbar sind.

    Jetzt gibt es zwei Möglichkeiten:
    Wenn eigene Änderungen existieren und die kürzlichen Änderungen in der Original-Repository angewandt werden sollen, ohne dass die eigenen Änderungen verloren gehen, kann der rebase Befehl benutzt werden:

    git rebase upstream/master

    Wenn ihr keine Änderungen an eurer lokalen Branch vorgenommen habt, reicht auch ein einfaches merge aus.

    git merge upstream/master

    Jetzt habt ihr die Änderungen von der Original-Repository in eurer lokalen Repository angewandt. Wollt ihr diese nun in eurem Fork auf GitHub hochladen kann dies mit dem push Befehl gemacht werden:

    git push -f origin master

    Grüße seh

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „seh“ ()

    Ich hab jetzt über den VS Installer Github-Erweiterung für Visual Studio installier.
    Da muss man sich nochmal anmelden drüber und das Projekt Clonen.
    Find ich jetzt gar nichtmal so übel und einfach.

    Da ich schon dabei war hab ich noch den Klassen-Disigner mit installiert um das Klassendiagramm
    in Visual Studio anschauen zu können. Klappt auch bestens

    Vielleicht hilft es den einen oder anderen

    Neuer Commit - DB Context erstellt

    Hallo Leute.

    Gerade habe ich wieder eingecheckt. Ich habe ein neues Projekt der Projektmappe hinzugefügt welches für unseren EntityFramework DBcontext ist.
    Nicht wundern das dieses Projekt in C# ist. C# deshalb weil EF Core noch(!!) keine Migration für VB.Net unterstützt. Bedeutet das die generierung der Migrationsklassen für VB noch nicht implementiert wurde.
    Ich habe die Nuget-Pakete für EF Core SQLServer und InMemory hinzugefügt. Den InMemory Provider benötigen wir dann für die UnitTests.

    Egal, in diesem Projekt wird nicht viel gemacht. Es gibt nur eine Klasse StorageContext welche von DBcontext erbt. Das ganz normale vorgehen für EF. Ich habe noch ein paar Hilfsmethoden eingefügt welche soweit selbsterklärend sein sollten. Als Connectionstring übergebe ich jetzt im Moment für die Entwicklungszeit einfach einen ConnectionString für eine LocalDB welche im Profilordner des Benutzers abgelegt wird. So läufts bei jedem 8-)
    github.com/NoFear23m/HomeStora…8b37e0b1385b7873762841842

    Dennoch möchte ich einen besonderen Augenmerk auf die Methode UpdateEntitysBeforeSaving lenken. Diese wird aufgerufe bevor gespeichert wird, egal ob Syncon oder Asyncron.
    Seht euch den Code an und wenn Ihr euch nicht sicher seit was er macht fragt nach. Dies ist auf jeden Fall eine eigene implementiwerung von mir welche einem SEHR viel Arbeit abnimmt.

    Der DBContext hat einen Verweis auf das Model.
    Die HomeStorage.App allerdings hat einen AUCH einen Verweis auf EF Core und den Context. Benötigt wird dies nicht(!!!) aber ich mach das gerne während der Entwicklung um sicherzustellen das die Assemblys in den Ausgabeordner neu kopiert werden sobal sich was ändert. Die könnten am schluss entfernt werden.

    PS: Die DBSets kommen gleich noch dazu...

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

    seh schrieb:

    Wenn man die Repository forked und diese dann auf seinen PC cloned, sollte man den Original Ursprung als Remote hinzufügen:

    git remote add upstream github.com/NoFear23m/HomeStorage.git

    Hi,
    Ich weis nicht ob das jetzt richtig war, aber wenn ich in der GitHub Desktop in den Einstellungen des Repository den Remote auf https://github.com/NoFear23m/HomeStorage.git ändere, bekomme ich alle änderungen direkt mit, (man muss dann auf Fetch origin drücken, wobei das glaub auch ab und an automatisch gemacht wird.
    "Hier könnte Ihre Werbung stehen..."
    OK, also hast es nun hinbekommen?!

    Bis hier her Fragen??? Bez. Settings im Model oder bez. des Contexts und deren Hilfsmethoden?
    Denn heute abend mach ich wieder weiter.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
    Hi,
    Habs hinbekommen, war echt easy... keine Ahnung ob die Commits (wenn ich welche machen soll) dann auch bei Dir ankommen oder in meinem Fork, müsste ich austesten.
    Jedenfalls gefällt mir GitHubDesktop richtig gut...

    Fragen, Ähh, ja... Settings... wofür genau benötigen wir die? oder, was speichern wir dort ab?
    Es gibt ja mehrere SettingCategorys, die teilweise auf die einzelnen Projekte zielen, richtig? (SettCatUi, SettCatLogic).

    Den StorageContext hab ich verstanden, auch deine UpdateEntitysBeforeSaving ist soweit klar...
    "Hier könnte Ihre Werbung stehen..."
    Hallo

    MichaHo schrieb:

    Fragen, Ähh, ja... Settings... wofür genau benötigen wir die? oder, was speichern wir dort ab?
    Es gibt ja mehrere SettingCategorys, die teilweise auf die einzelnen Projekte zielen, richtig? (SettCatUi, SettCatLogic).

    Was speichern wir in die Settings. Naja, alles mögliche was man so benötigt. Beispielsweise Einstellungen die den User trifft, Fensterpositionen, evtl. eingestellte Farben usw.
    Ja, ich habe diverse Kategorien vordefiniert. Diese haben jetzt erstmal nix mit den Projekten zu tun.
    Beispiel: Ein "SettingValue" in der Kategorie SettCatUi speichert etwas was das UI betrifft. So kann man später nach Kategorien Filter und sortieren. ;)
    In SettCatLogic kommt alles was die Logic betrifft. Z.b. soll das Programm eine Meldung ausgeben beim unterschreiten der Mindestlagermenge. Solche Dinge.
    So ist alles brav unterteilt.
    Der EnumDataType ist dafür da um zu wissen welchen Datentyp der Setting-Knoten hat. So kann man dann im View später Beispielsweise beim Boolean Datentyp eine Checkbox anzeigen und beim TypeStringFromList ein DropDown. So macht das Sinn 8o

    MichaHo schrieb:

    Den StorageContext hab ich verstanden, auch deine UpdateEntitysBeforeSaving ist soweit klar...

    Echt? Cool. Jetzt wird hoffentlich auch klar wofür wir die Interfaces im Model geschaffen hatten.

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

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Also was ich hier so lese, was du vorhast, macht mich echt neugierig. Aber in der Woche fehlt mir leider die Zeit mich abends noch an den Rechner zu setzen. Aber heute Abend nehme ich es mir Mal fest vor und schaue mir das Projekt an. Sonst komme ich im halben Jahr erst mir meinen Fragen.

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