Vorrei creare un database con l'entità Framework dell'entità che sarebbe automaticamente aggiunto al mio pool elattico azzurro.
Lo faccio con un DatabaseFacadeExtension che esegue il comando SQL dopo la creazione del database come suggerito qui: Pool elastico di Azure SQL Server: aggiungi automaticamente il database al pool
public static async Task<bool> EnsureCreatedAsync(this DatabaseFacade databaseFacade, string elasticPoolName, CancellationToken cancellationToken = default)
{
if (!await databaseFacade.EnsureCreatedAsync(cancellationToken)) return false;
// the database has been created.
var dbName = databaseFacade.GetDbConnection().Database;
try
{
cancellationToken.ThrowIfCancellationRequested();
if (!string.IsNullOrEmpty(elasticPoolName))
{
await databaseFacade.ExecuteSqlCommandAsync(new RawSqlString(
$"ALTER DATABASE {dbName} MODIFY ( SERVICE_OBJECTIVE = ELASTIC_POOL (name = [{elasticPoolName}] ));"),
cancellationToken);
}
return true;
}
catch
{
await databaseFacade.EnsureDeletedAsync(cancellationToken);
throw;
}
}
Funziona ma preferirò un'operazione atomica in cui il database verrà creato direttamente nel pool elastico di Azure.
Azure Elastic Pool supporta la creazione di un nuovo database in un pool esistente o come singolo database. È necessario essere connessi al database principale per creare un nuovo database.
Per ulteriori dettagli, consultare: Transact-SQL: gestione di database in pool .
Esempio di codice T-SQL :
Creazione di un database in un pool elastico:
CREATE DATABASE db1 ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = S3M100 ) ) ;
Vedere: Database singolo database SQL / pool elastico di Azure
È possibile sostituire l'istruzione T-SQL e riprovare.
Spero che sia di aiuto