Bauen der Web-App
Kurzüberblick 02
Klassenbibliothek
Sushi für's Hirn
ICM@I3CM
Inverted Classroom Model im Institut für Ingenieurinformatik und computergestützte Mathematik (I3CM)
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Klassen-�bibliothek
Klassenbibliothek erstellen
Modell erstellen
Datenbank erstellen
Modell anpassen
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Klassenbibliothek erstellen
Danach wird in dieser Solution zunächst die Klassenbibliothek (Class Library) erzeugt. Diese beinhaltet später, das Datenmodell und allen Quellcode zur Datenverarbeitung, der nicht spezifisch für eine Benutzungsschnittstelle ist.
Desktop-Anwendungen, Web-Anwendungen und Anwendunge für mobile Geräte verwenden hier den gleichen Quellcode.
Achten Sie darauf, die korrekte Programmiersprache (C#) und das korrekte Profil (.NET Framework) auszuwählen.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Klassenbibliothek erstellen
Danach wird in dieser Solution zunächst die Klassenbibliothek (Class Library) erzeugt. Diese beinhaltet später, das Datenmodell und allen Quellcode zur Datenverarbeitung, der nicht spezifisch für eine Benutzungsschnittstelle ist.
Desktop-Anwendungen, Web-Anwendungen und Anwendunge für mobile Geräte verwenden hier den gleichen Quellcode.
Achten Sie darauf, die korrekte Programmiersprache (C#) und das korrekte Profil (.NET Framework) auszuwählen.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
EntityFrameWork installieren
Der objektorientierte Zugriff auf die relationale Datenbank erfolgt über das EntityFrameWork.
Diese wird über den NuGet Package Manager installiert.
Beachten Sie, dass die Installation nur für das jeweilige Projekt erfolgt, d.h. für die Projekte, die später auch auf die Datenbankschicht zugreifen sollen, muss das Framework auch installiert werden.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
EntityFrameWork installieren
Der objektorientierte Zugriff auf die relationale Datenbank erfolgt über das EntityFrameWork.
Diese wird über den NuGet Package Manager installiert.
Beachten Sie, dass die Installation nur für das jeweilige Projekt erfolgt, d.h. für die Projekte, die später auch auf die Datenbankschicht zugreifen sollen, muss das Framework auch installiert werden.
Projekte
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
EntityFrameWork installieren
Der objektorientierte Zugriff auf die relationale Datenbank erfolgt über das EntityFrameWork.
Diese wird über den NuGet Package Manager installiert.
Beachten Sie, dass die Installation nur für das jeweilige Projekt erfolgt, d.h. für die Projekte, die später auch auf die Datenbankschicht zugreifen sollen, muss das Framework auch installiert werden.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
EntityFrameWork installieren
Der objektorientierte Zugriff auf die relationale Datenbank erfolgt über das EntityFrameWork.
Diese wird über den NuGet Package Manager installiert.
Beachten Sie, dass die Installation nur für das jeweilige Projekt erfolgt, d.h. für die Projekte, die später auch auf die Datenbankschicht zugreifen sollen, muss das Framework auch installiert werden.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
EntityFrameWork installieren
Der objektorientierte Zugriff auf die relationale Datenbank erfolgt über das EntityFrameWork.
Diese wird über den NuGet Package Manager installiert.
Beachten Sie, dass die Installation nur für das jeweilige Projekt erfolgt, d.h. für die Projekte, die später auch auf die Datenbankschicht zugreifen sollen, muss das Framework auch installiert werden.
Referenz
Meldung
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Klassen-�bibliothek
Klassenbibliothek erstellen
Modell erstellen
Datenbank erstellen
Modell anpassen
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Neues Datenmodell
Als Datenmodell wird ein ADO.NET Entity Data Model zum Projekt hinzugefügt.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Neues Datenmodell
Als Datenmodell wird ein ADO.NET Entity Data Model zum Projekt hinzugefügt.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Neues Datenmodell
Das Datenmodell sollte zu Beginn leer sein.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Neue Entität erstellen
Mittels der Funktion ‘Add New’ → ‘Entity…’ werden neue Entitäten erzeugt.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Neue Entität erstellen
Mittels der Funktion ‘Add New’ → ‘Entity…’ werden neue Entitäten erzeugt.
Dabei sollte der Haken bei ‘Create key property’ gesetzt sein.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Relationen erstellen
Mittels der Funktion ‘Add New’ → ‘Association…’ werden neue Relationen/Assoziationen erzeugt.
Aktivieren Sie dazu den Haken bei:
“Add foreign key properties to the ‘...’ Entity”
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Relationen erstellen
Mittels der Funktion ‘Add New’ → ‘Association…’ werden neue Relationen/Assoziationen erzeugt.
Aktivieren Sie dazu den Haken bei:
“Add foreign key properties to the ‘...’ Entity”
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Klassen-�bibliothek
Klassenbibliothek erstellen
Modell erstellen
Datenbank erstellen
Modell anpassen
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Aus dem Datenmodell werden sowohl die C#-Klassen, als auch die Struktur der Datenbank erstellt.
Visual Studio legt für beides Verknüpfungen an, wenn die Datenbank das erste mal erstellt wird.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Aus dem Datenmodell werden sowohl die C#-Klassen, als auch die Struktur der Datenbank erstellt.
Visual Studio legt für beides Verknüpfungen an, wenn die Datenbank das erste mal erstellt wird.
Visual Studio verwaltet dazu verschiedene Verknüpfungen zu Datenbanken. Hier erstellen Sie über die Schaltfläche ‘New Connection…’ eine neue Verknüpfung.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung
Eine Datenbankverknüpfung besteht aus mehreren Teilen:
Die Art der Datenbank, in unserem Falle ein Microsoft SQL Server (Das ADO.NET und das EntityFrameWork unterstützen verschiedene Datenbanken, da sich die Schnittstellen und die verwendeten SQL-Dialekte leicht unterscheiden benötigt man diese Angabe zur Verbindung mit der Datenbank.)
Datenbanktyp
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung
Eine Datenbankverknüpfung besteht aus mehreren Teilen:
Eine Angabe, wo die Datenbank ausgeführt wird, bestehend aus dem Namen des Hosts (das ist der Rechner auf dem der Datenbankserver läuft) und dem Namen der Instanz der Datenbankserver (Es können nämlich mehrere Datenbankserver auf einem Rechner laufen.)
Hier verwenden Sie als Hostnamen ‘.’ für den lokalen Rechner (localhost) und ‘SQLEXPRESS’ für den Namen der Instanz. (Es sei denn, sie haben diesen bei der Installation geändert.)
Datenbankserver
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung
Eine Datenbankverknüpfung besteht aus mehreren Teilen:
Eine Angabe dazu, wie beim Zugriff auf die Datenbank die Authentifizierung durchgeführt werden soll. Hier wählen Sie ‘Windows Authentication’.
Authentifizierung
Zur Laufzeit wird die Web-Anwendung vom Web-Server ausgeführt, d.h. es gibt nur einen Prozess für alle Anwender, der unter einem allgemeinen Benutzerkonto ausgeführt wird. Zugriffsrechte auf Geschäftsobjekte müssen daher in der Web-Anwendung implementiert werden.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung
Eine Datenbankverknüpfung besteht aus mehreren Teilen:
Dem Namen der Datenbank: Eine Datenbankserver kann in der Regel mehrer Datenbanken bereitstellen, um diese zu unterscheiden, haben diese eindeutige Namen.
In dem Feld ist eine Drop-Down-Liste der vorhandenen Datenbanken hinterlegt.
Datenbankname
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung
Eine Datenbankverknüpfung besteht aus mehreren Teilen:
Dem Namen der Datenbank: Eine Datenbankserver kann in der Regel mehrer Datenbanken bereitstellen, um diese zu unterscheiden, haben diese eindeutige Namen.
In dem Feld ist eine Drop-Down-Liste der vorhandenen Datenbanken hinterlegt. Sie können dort auch einfach einen neuen Namen angeben. Der Datenbankadapter erstellt diese Datenbank dann.
Datenbankname
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung abspeichern
Die Anwendung benötigt zur Laufzeit alle Informationen zum Zugriff auf die Datenbank. Daher gibt es zum Abspeichern einer kompletten Datenbankverbindung ein Format um diese in einer Zeichenkette abzulegen. Diese kann von der Anwendung dann aus einer Konfigurationsdatei ausgelesen werden.
Haken Sie die Option ‘Save connection settings in App.Config as:’ an, um diese Zeichenkette als sog. Connection string abzuspeichern.
Connection String
Option
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung abspeichern
Die Anwendung benötigt zur Laufzeit alle Informationen zum Zugriff auf die Datenbank. Daher gibt es zum Abspeichern einer kompletten Datenbankverbindung ein Format um diese in einer Zeichenkette abzulegen. Diese kann von der Anwendung dann aus einer Konfigurationsdatei ausgelesen werden.
Haken Sie die Option ‘Save connection settings in App.Config as:’ an, um diese Zeichenkette als sog. Connection string abzuspeichern.
Connection String
Option
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankverknüpfung abspeichern
Die Anwendung benötigt zur Laufzeit alle Informationen zum Zugriff auf die Datenbank. Daher gibt es zum Abspeichern einer kompletten Datenbankverbindung ein Format um diese in einer Zeichenkette abzulegen. Diese kann von der Anwendung dann aus einer Konfigurationsdatei ausgelesen werden.
Haken Sie die Option ‘Save connection settings in App.Config as:’ an, um diese Zeichenkette als sog. Connection string abzuspeichern.
App.config
Connection string
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zur Erstellung der Datenbank wird SQL-Code erzeugt, der dann auf dem Datenbankserver ausgeführt werden muss um die entsprechenden Tabellen in der Datenbank anzulegen.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zur Erstellung der Datenbank wird SQL-Code erzeugt, der dann auf dem Datenbankserver ausgeführt werden muss um die entsprechenden Tabellen in der Datenbank anzulegen.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zur Erstellung der Datenbank wird SQL-Code erzeugt, der dann auf dem Datenbankserver ausgeführt werden muss um die entsprechenden Tabellen in der Datenbank anzulegen.
Dieser SQL-Code landet in einer Textdatei, die unterhalb des Modells in das Projekt eingehängt wird.
SQL-Datei
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zur Erstellung der Datenbank wird SQL-Code erzeugt, der dann auf dem Datenbankserver ausgeführt werden muss um die entsprechenden Tabellen in der Datenbank anzulegen.
Dieser SQL-Code landet in einer Textdatei, die unterhalb des Modells in das Projekt eingehängt wird.
SQL-Datei
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zum Ausführen des Codes wird im SQL-Fenster eine Verbindung zur Datenbank erstellt.
Connect
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zum Ausführen des Codes wird im SQL-Fenster eine Verbindung zur Datenbank erstellt.
Datenbankserver
Name der Datenbank
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zum Ausführen des Codes wird im SQL-Fenster eine Verbindung zur Datenbank erstellt.
Anschließend wird die Datenbank ausgewählt und der SQL-Code exekutiert.
Datenbank
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zum Ausführen des Codes wird im SQL-Fenster eine Verbindung zur Datenbank erstellt.
Anschließend wird die Datenbank ausgewählt und der SQL-Code exekutiert.
Ausführen
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbank erstellen
Zum Ausführen des Codes wird im SQL-Fenster eine Verbindung zur Datenbank erstellt.
Anschließend wird die Datenbank ausgewählt und der SQL-Code exekutiert.
Meldung
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
SQL-Management-Studio
Mit dem SQL-Management-Studio können Sie auf den Datenbankserver zugreifen und sich die Struktur der Datenbank anzeigen lassen.
Dies können Sie nutzen um zu prüfen ob die Datenbank korrekt angelegt wurde.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Codegeneratoren
Zusätzlich zum SQL-Code hängt die Funktion “Generate Datebase” auch zwei Codegeneratoren in das Projekt ein.
Einen zum Generieren des modell- spezifischen Datenbankadapters und einen zweiten zum Generieren der eigentlichen Klassen.
Adaptergenerator
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Codegeneratoren
Zusätzlich zum SQL-Code hängt die Funktion “Generate Datebase” auch zwei Codegeneratoren in das Projekt ein.
Einen zum Generieren des modell- spezifischen Datenbankadapters und einen zweiten zum Generieren der eigentlichen Klassen.
Klassengenerator
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Codegeneratoren
Zusätzlich zum SQL-Code hängt die Funktion “Generate Datebase” auch zwei Codegeneratoren in das Projekt ein.
Einen zum Generieren des modell- spezifischen Datenbankadapters und einen zweiten zum Generieren der eigentlichen Klassen.
Datenbankadapter
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Codegeneratoren
Zusätzlich zum SQL-Code hängt die Funktion “Generate Datebase” auch zwei Codegeneratoren in das Projekt ein.
Einen zum Generieren des modell- spezifischen Datenbankadapters und einen zweiten zum Generieren der eigentlichen Klassen.
Nach Änderungen am Modell muss das Modell abgespeichert werden (Strg+s) um eine Neuerstellung der Klassen zu veranlassen.
Klassen
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Datenbankadapter
Der Datenbankadapter ist modellspezifisch, d.h. er enthält für jeden Datentypen ein eigenes DbSet-Attribut. Über dieses Attribut können die Daten dann per LINQ aus der Datenbank abgefragt werden.
Außerdem enthält der generierte Adapter einen Aufruf des Konstruktor der Superklasse DBContext mit dem der Name Adapters angelegt wird. Über diesen Namen wählt der Datenbankadapter den passenden Connection String aus der Konfigurations- datei.
DBSets
Name
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Klassen-�bibliothek
Klassenbibliothek erstellen
Modell erstellen
Datenbank erstellen
Modell anpassen
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Vorbemerkung
Das Mapping auf diese IDs geschieht implizit. Der Zugriff auf die einzelnen Objekte über die Web-Oberfläche erfolgt anhand der Id.
Damit diese im Datenmodell zugreifbar wird, muss das Mapping der IDs ‘explizit’ gemacht werden.
Die folgenden Schritte sind nur notwendig, wenn Sie die Relation nicht über den Dialog erstellt haben und die IDs daher fehlen.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Vorbereitung
Bei der Erstellung der Datenbank aus dem Modell, wir das sog. Mapping, also die Abbildung der einzelnen Attribute der Entitäten auf die Spalten in der Datenbank, gespeichert.
Sollten bei Änderunge am Modell Fehlermeldungen auftreten können diese gelöscht werden.
Sie finden die Verweise auf die Tabellen im Modellbrowser unter dem Eintrag .Store → Tables/Views. Die Einträge können mit ‘Entf’ gelöscht werden.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Sichtbarmachen der einzelnen ID
Fügen Sie auf der Seite mit dem ‘n’-Ende ein zusätzliches Attribute mit dem Namen <RollenName>ID vom Type Int32 ein.
Ist die gegenüberliegende Multiplizität 0..1, dann setzen Sie Nullable auf true, dann ist es erlaubt eine oder keine Zahl in dem Feld abzulegen.
Ist die Gegenüberliegende Multiplizität 1, dann muss immer eine Zahl abgelegt werden, der Wert für Nullable ist also false.
Dieser Schritt ist nur notwendig, wenn Sie die Relation nicht über den Dialog erstellt haben und die IDs daher fehlt.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Relation explizit definieren
Wählen Sie die Relation aus. Unter Contraints finden Sie den Eintrag ‘Referencial Contraint’, hier stellen Sie als Principal den Type am 1-Ende der Relation an und als Principal Key dessen ID und als Dependent den Typ mit am n-Ende der Relation und als Depentend Property das gerade erstellt Attribut.
Dieser Schritt ist nur notwendig, wenn Sie die Relation nicht über den Dialog erstellt haben und die IDs daher fehlt.
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen
Prof. Dr.-Ing. Jörn Schlingensiepen
https://lehre.schlingensiepen.com
Cliparts aus der Open Clip Art Library
Sushi für's Hirn
ICM@I3CM
Inverted Classroom Model im Institut für Ingenieurinformatik und computergestützte Mathematik (I3CM)
ICM@I3CM
Prof. Dr.-Ing. Jörn Schlingensiepen