Implementato il supporto per la scoperta e la visualizzazione dello schema del database, inclusa la creazione di provider specifici per SQL Server e l'integrazione con il servizio di connessione al database.

This commit is contained in:
2025-04-28 23:55:56 +02:00
parent 503b567fb7
commit d1103c4e7d
10 changed files with 546 additions and 79 deletions
+11 -38
View File
@@ -241,17 +241,19 @@
databaseInfo = dbInfo;
}
// Qui dovresti implementare la connessione al database selezionato
// e recuperare le informazioni sullo schema
// Per questo esempio, simuliamo che sia avvenuto con successo
await Task.Delay(1000); // Simulazione operazione asincrona
// Crea il database manager e connettiti al database selezionato
var databaseManager = DatabaseService.GetDatabaseManager();
// Verifica la connessione al database specifico
if (!await databaseManager.TestConnectionAsync())
{
throw new Exception($"Non è possibile connettersi al database {DatabaseService.SelectedDatabase}");
}
// Recupera le informazioni sullo schema (tabelle e colonne)
schemaInfo = await databaseManager.GetDatabaseSchemaAsync();
showSchemaInfo = true;
// In un'implementazione reale, qui dovresti eseguire:
// schemaInfo = await databaseManager.GetDatabaseSchemaAsync();
// Per ora creiamo dati di esempio
schemaInfo = CreateSampleSchemaInfo();
}
catch (Exception ex)
{
@@ -264,33 +266,4 @@
isConnecting = false;
}
}
// Metodo temporaneo per generare dati di esempio - da sostituire con dati reali
private IDictionary<string, IEnumerable<DbColumnInfo>> CreateSampleSchemaInfo()
{
var result = new Dictionary<string, IEnumerable<DbColumnInfo>>();
// Tabella Customers
var customerColumns = new List<DbColumnInfo>
{
new DbColumnInfo { Name = "Id", DataType = "int", IsPrimaryKey = true },
new DbColumnInfo { Name = "Name", DataType = "nvarchar(100)" },
new DbColumnInfo { Name = "Email", DataType = "nvarchar(255)" },
new DbColumnInfo { Name = "Created", DataType = "datetime" }
};
// Tabella Orders
var orderColumns = new List<DbColumnInfo>
{
new DbColumnInfo { Name = "Id", DataType = "int", IsPrimaryKey = true },
new DbColumnInfo { Name = "CustomerId", DataType = "int", IsForeignKey = true, ReferencedTable = "Customers", ReferencedColumn = "Id" },
new DbColumnInfo { Name = "OrderDate", DataType = "datetime" },
new DbColumnInfo { Name = "TotalAmount", DataType = "decimal(18,2)" }
};
result.Add("Customers", customerColumns);
result.Add("Orders", orderColumns);
return result;
}
}