Files
2026-03-13 09:13:28 +01:00
..
2024-06-04 12:18:48 +02:00
2022-03-01 16:04:23 +01:00
2024-07-29 16:53:53 +02:00
2022-02-09 19:06:05 +01:00
2024-04-18 16:41:25 +02:00
2021-11-03 19:11:05 +01:00
2024-07-29 17:30:11 +02:00
2022-02-15 11:48:41 +01:00
2021-06-22 16:09:17 +02:00
2021-06-22 16:09:17 +02:00
2022-02-09 19:06:05 +01:00
2026-02-20 12:01:42 +01:00

Appunti gestione GWMS DB

Per la gestione dell'accesso al DB si opera con EFCore --> app blazor server

Versione MsSql iniziale

Versione iniziale basata su SqlServer

Scaffolding

Per generare le classi da un DB esistente con cui operare EFCore CodeFirst usare lo scaffolding coi seguenti comandi. Attenzione: la classe DbContext viene creata INSIEME alle viste nella folder DatabaseModel (nell'esempio seguente...)

DB iniziale

Scaffold-DbContext "Server=SQL2016DEV;Database=GWMS;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DatabaseModels

SOLO di tabelle/viste selezionate (con force update)

Scaffold-DbContext "Server=SQL2016DEV;Database=GWMS;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DatabaseModels -Tables nome_tabella, nome_vista

Reset DB MsSql

Per resettare un db MsSql (cancellando tutto x poter ridare update) eseguire il seguente codice

-- drop constraints
DECLARE @DropConstraints NVARCHAR(max) = ''
SELECT @DropConstraints += 'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + '.'
                        +  QUOTENAME(OBJECT_NAME(parent_object_id)) + ' ' + 'DROP CONSTRAINT' + QUOTENAME(name)
FROM sys.foreign_keys
EXECUTE sp_executesql @DropConstraints;
GO
  
-- drop tables
DECLARE @DropTables NVARCHAR(max) = ''
SELECT @DropTables += 'DROP TABLE ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
EXECUTE sp_executesql @DropTables;
GO

Il DB viene poi rigenerato dal Package Maganer console con

Update-Database

Versione MySql in produzione

Messa variabile boolean x imporre versione MySql (si potrebbe fare una cosa più "fine-tuned" x selezione aruntime del provider)

Pensata per impiego con MariaDB /MySql in caso linux dotnet 5

Impiegato provider dotnetcore Pomelo:

Generazione script

Sono stati ricreati gli script di generazione x MySql cancellando TUTTE le migrations + stato db (ogni file in folder Migrations) + comandi

Add-Migration InitDb
Update-Database

Generazione DB + utente DB MySql

All'avvio applicazione, prima del seed di dati, viene eseguito un check dell'utente corrente dell'installazione x verifica se esista DB + Utente dedicati (come x applicazioni EgtBW ad esempio)

...da completare codice + descrizione...

Impiego multi provider

In caso di scelta per impiego di più providers (MsSql, MariaDB, SqlLite, ...) è necessario gestire in modo diverso le classi di inizializzazione del DbContenxt. Non ancora verificato, ma da approfondire secondo i seguenti links:

Ottimizzazioni e spunti

Alcuni spunti da approfondire:

Migrations

Approfondimenti:

Approfondimenti

Qualche link di approfondimento: