# Projektaufgabe 6. Semester [toc] ## Abgabetermine | Projektaufgabe | Abgabe | | ----------------------------------------------------------- | ---------------- | | EntityFramework | 02.08.2020 23:55 | | Hierarchiesche Structur der Location (CTE) | 15.08.2020 23:55 | ## Migration MySQL zu MS SQL Migrierung von MySQL zu Microsoft SQL Server wurde mit dem MSSA Tool erstelt. SQL Server 2017 wurde als Technologie gewählt. Step by Step HowTo ist hier detailliert dokumentiert: [SQLShark](https://www.sqlshack.com/migrate-mysql-tables-sql-server-using-sql-server-migration-assistant-ssma-ssis/) ## GIT Unterordner des PA-Testat ## EntityFramework Funktionalitäten mit Repository und EF für: | Button | Beschreibugn | | --------- | ----------------------------------------- | | Load data | Ladet alle Customer aus der SQL Datenbank | | Add | Fügt ein Customer in der Db hinzu | | Delete | Löscht ein Customer | Mittels **EF** und **LINQ** Radiobutton kann man die Variante des BD-Interaktionsmethode auswählen. ### How To SQL-String kann man ignorieren da es nur für den ADO.NET-teil Relevant ist. 1. SQL-String ist in der App.config zu finden. 2. Danach die SQL.bak detei mittel SQL-Studio einlesen. 3. Applikation ausführen ![](https://git.r4o.ch/zbw/pa2.Testat/src/branch/master/dbTestat/LoggingClient.png) ## Hierarchiesche Structur der Location (CTE) CTE Script: ```sql ;WITH cte_location AS ( SELECT location_id, parentid, 0 AS locationLevel, loc.designation AS LocationDesignation, pod.designation AS POD_Designation, adr.streetname, adr.streetnumber, tow.zip, tow.town FROM [inventarisierungsloesung].Location AS loc INNER JOIN [inventarisierungsloesung].pointofdelivery pod ON pod.location_fk = loc.location_id INNER JOIN [inventarisierungsloesung].address adr ON loc.address_fk = adr.address_id INNER JOIN [inventarisierungsloesung].town tow ON adr.town_fk = tow.town_id WHERE parentid IS NULL UNION ALL SELECT loc.location_id , loc.parentid , cte_loc.locationLevel + 1, loc.designation, pod.designation, adr.streetname, adr.streetnumber, tow.zip, tow.town FROM [inventarisierungsloesung].Location AS loc INNER JOIN cte_location AS cte_loc ON cte_loc.location_id = loc.parentid INNER JOIN [inventarisierungsloesung].pointofdelivery pod ON pod.location_fk = loc.location_id INNER JOIN [inventarisierungsloesung].address adr ON loc.address_fk = adr.address_id INNER JOIN [inventarisierungsloesung].town tow ON adr.town_fk = tow.town_id ) Select * FROM cte_location ``` Der obige Script wird von einer StoredProcedure angesptossen. ERROR: Aktuell liegt ein Fehler vor was aus Zeitgründen nicht behoben wird. ``` "The data reader is incompatible with the specified 'inventarisierungsloesungModel.Location'. A member of the type, 'location_id', does not have a corresponding column in the data reader with the same name." ``` Ausführung auf der Datenbank ergiebt folgender Output: ![CTE_OutPut](C:\Workspace\pa2.Testat\dbTestat\CTE_OutPut.bmp)