none
prinzipielles Problem mit NET Core RRS feed

  • Frage

  • Hallo,

    quäle mich für ein neues Projekt durch Net Core und habe gerade ein prinzipielles Problem mit ASP.NET

    Ich habe für meine Problemstellung (Produktdatenbank) 4 Tabellen erstellt.

    "Produkte" --> grundlegende Infos wie: Artikelnummer, Gewicht, VK, etc.
    "Artikel" --> alle Einzelkomponenten wie: Schrauben, Mutter, etc.
    "Produkt_Artikel" --> Produkte_Id, Artikel_Id, Preis (aus "Artikel"), Stueck, etc
    "Bilder" --> Produkte_Id, Bilder, Text

    In "Produkte" wird das Produkt generell erfasst.
    Dann sollen die einzelnen Artikel ausgewählt werden und in der "Produkt_Artikel" abgelegt werden.
    Zusätzlich sollen dann noch beliebig viele Bilder hinzugefügt werden können.

    Möchte dazu anmerken dass ich aus der ASP Classic Welt komme und dort das ohne Weiteres lösen kann.
    Leider ist NET.CORE für mich ein "spanisches Dorf" und ich stolpere mehr oder weniger durch den Code.

    Ich will keine fertige Lösung von Euch sondern zweckdienliche Hinweise die auch ein ASP Classic Mensch verstehen kann.

    Danke für Eure Hilfe
    Paul 

    Sonntag, 18. Juni 2017 00:15

Alle Antworten

  • Hallo Paul,

    da ich selbst nie ASP Classic verwendet habe, kann ich leider nicht wissen was ein "ASP Classic Mensch" versteht.

    Ich gehe mal davon aus das Du ASP.NET Core MVC nutzt und nicht genau weißt was Du damit anfangen sollst. Erstmal solltest Du dich mit MVC beschäftigen. Hier ein Video Kurs der sich aber mit ASP.NET MVC 5 beschäftigt was etwas anders ist aber die Grundlagen gut und schnell zeigt. Im Grunde ist MVC nicht schwer zu verstehen. Im Model View Controller Pattern, gibt es eigentlich nur 2 Zustände 

    1. Ein User ruft eine Website auf wo ein Formular angezeigt werde soll > der Controller holt sich aus dem Model die entsprechenden Informationen und gibt sie an den View weiter > der View ist dafür zuständig das Model entsprechend zu rendern 
    2. Der View zeigt ein Formular an > User füllt es aus und schickt es weg > der Controller prüft ob das Model valide ist > ist es nicht valide wird dem User das Formular wieder angezeigt > ist es valide wird es an das Model übergeben > das Model macht etwas damit (speichert es z.B. in der DB)

    So nun zu DB. Am besten wäre es Du nutzt das Entity Framework und im Idealfall auch den Code First Ansatz. Bei diesem Ansatz erstellt man zuerst das Model und aus diesem Model dann die DB. In deinem Fall könnte das Model so aussehen:

    public class Produkt
            {
                public int ProduktId { get; set; }
                public int Artikelnummer { get; set; }
                public double Gewicht { get; set; }
    
                public List<Artikel> Artikel { get; set; }
                public List<ProduktBild> Bilder { get; set; }
            }
    
            public class Artikel
            {
                public int ArtikelId { get; set; }
                public string Name { get; set; }
            }
    
            public class ProduktBild
            {
                public int ProduktBildId { get; set; }
                public string BildPath { get; set; }
            }
    
            public class ProduktContext : DbContext
            {
                public DbSet<Produkt> Produkte { get; set; }
                public DbSet<Artikel> Artikel { get; set; }
                public DbSet<ProduktBild> ProduktBilder { get; set; }
            }

    Bei MVA gibt es auch ein kostenlosen Video Kurs zum Entity Framework.

    Bei Microsoft Docs finden sich aber sehr viel Tutorials zum Thema, z.B. das Link


    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP

    Sonntag, 18. Juni 2017 01:08
  • Hallo Paul,
    Du schreibst leider nichts ob Du eine Webseite oder eine APP für Android oder was auch immer erstellen willst. 
    Hier die Antwort wenn es eine Webseite ist:

    ich stehe ein wenig anders zum CodeFirst Ansatz. Hier wäre mein Vorgehen/Vorschlag.

    1. Schau das Du Dich an Entity Framework 6.x hälst.
    ASP.NET Core soll heute und in Zukunft mit EF 6.x und Database first arbeiten.
    Das meint: Du hast das Datenbankmodel als Basis und bildest es für deine Anwendung via Entity Framework ab.
    Eine Anpassung des Datenbankmodels erfolgt z.B. im SQL Server Management Studio. 
    Dein Zugriff erfolgt, so alles glatt läuft, nur über Entity Framework. 
    Der Unterschied ist der das Entity Framework bei Database First nicht zum anlegen von Tabellen oder sonstigen Dingen beansprucht wird. 

    2. in ASP.NET Core ist immer noch viel Bewegung drin. Achte auf das jeweilige Datum von dem das ist was Du gerade liest/anschaust. 

    3. Du hast 2 Stellen an denen sich heftig was geändert hat.
    Zunächst ist das ASP.NET MVC und Razor. Danach kommt ASP.NET CORE mit den heutigen Möglichkeiten u.a. die Anwendung auf verschiedenen Plattformen laufen zu lassen.
    Mein Tip wäre zuerst MVC anzuschauen. Das kann auch die Version sein die dein Visual Studio gerade mitbringt. Mache Dich mit Controllern den Views und Entity Framework vertraut. Achte auf deinen Primärschlüssel in der Datenbank. Den wenigsten Kummer hast Du mit einem AutoIncrement.  Benenne die Spalte einfach ID.

    Hier ein Link:
    https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6
    Doku EF: https://docs.microsoft.com/en-us/ef

    HTH

    Grüße Alexander

    Montag, 19. Juni 2017 17:50

  • ASP.NET Core soll heute und in Zukunft mit EF 6.x und Database first arbeiten.
    Das meint: Du hast das Datenbankmodel als Basis und bildest es für deine Anwendung via Entity Framework ab.

    Hallo Alexander,

    das liest sich so als wäre es eine offizielle aussage von Microsoft das ASP.NET Core nur mit EF 6.x betrieben werden soll. Dem ist aber nicht so. Man kann auch mit EF Core arbeiten ich wüste auch nicht was dagegen spricht. In den Kinderschuhen ist alles davon. 

    Noch vor 2 Jahren war ich auch für den DB first Ansatz, bis ich mit UWP angefangen habe und man keine andere Möglichkeit hatte als den Code first Ansatz. Seit dem schätze ich die Möglichkeiten die man damit hat.

    Für welchen Ansatz und EF Version man sich entscheidet, sollte zuerst am Schwerpunkt des Projektes festgelegt werden und erst dann nach persönlicher Vorliebe.


    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP

    Montag, 19. Juni 2017 23:04
  • Hallo Thomas,
    nein von MS ist das sicher nicht.

    Klar schrieb ich als erstes: Wenn es sich um eine Webseite handelt.
    Grüße Alexander

     
    Dienstag, 20. Juni 2017 06:00