97 lines
3.2 KiB
Markdown
97 lines
3.2 KiB
Markdown
# 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) |