Usar o driver ADO.NET do Spanner

O ADO.NET é uma interface genérica para acesso a fontes de dados do .NET. Para usar o ADO.NET com seu aplicativo, use o driver ADO.NET do Spanner.

O driver SpannerADO.NET é compatível com bancos de dados do dialeto GoogleSQL e do dialeto PostgreSQL.

Instalar o driver ADO.NET do Spanner

Para usar o driver ADO.NET do Spanner no seu aplicativo, adicione o seguinte pacote ao projeto .NET:

  Google.Cloud.Spanner.DataProvider

Usar o driver ADO.NET do Spanner

Para criar uma conexão ADO.NET com um banco de dados do Spanner, crie um SpannerConnectionStringBuilder com um nome de banco de dados totalmente qualificado como a string de conexão:

GoogleSQL

/// <summary>
/// Create an ADO.NET connection to a Spanner database.
/// </summary>
/// <param name="connectionString">
/// A connection string in the format
/// 'Data Source=projects/my-project/instances/my-instance/databases/my-database'.
/// </param>
public static async Task CreateConnection(string connectionString)
{
    // Use a SpannerConnectionStringBuilder to construct a connection string.
    // The SpannerConnectionStringBuilder contains properties for the most
    // used connection string variables.
    var builder = new SpannerConnectionStringBuilder(connectionString)
    {
        // Sets the default isolation level that should be used for all
        // read/write transactions on this connection.
        DefaultIsolationLevel = IsolationLevel.RepeatableRead,

        // The Options property can be used to set any connection property
        // as a key-value pair.
        Options = "statement_cache_size=2000"
    };

    await using var connection = new SpannerConnection(builder.ConnectionString);
    await connection.OpenAsync();

    await using var command = connection.CreateCommand();
    command.CommandText = "SELECT 'Hello World' as Message";
    await using var reader = await command.ExecuteReaderAsync();
    while (await reader.ReadAsync())
    {
        Console.WriteLine($"Greeting from Spanner: {reader.GetString(0)}");
    }
}

PostgreSQL

/// <summary>
/// Create an ADO.NET connection to a Spanner PostgreSQL database.
/// </summary>
/// <param name="connectionString">
/// A connection string in the format
/// 'Data Source=projects/my-project/instances/my-instance/databases/my-database'.
/// </param>
public static async Task CreateConnection(string connectionString)
{
    // Use a SpannerConnectionStringBuilder to construct a connection string.
    // The SpannerConnectionStringBuilder contains properties for the most
    // used connection string variables.
    var builder = new SpannerConnectionStringBuilder(connectionString)
    {
        // Sets the default isolation level that should be used for all
        // read/write transactions on this connection.
        DefaultIsolationLevel = IsolationLevel.RepeatableRead,

        // The Options property can be used to set any connection property
        // as a key-value pair.
        Options = "statement_cache_size=2000"
    };

    await using var connection = new SpannerConnection(builder.ConnectionString);
    await connection.OpenAsync();

    await using var command = connection.CreateCommand();
    command.CommandText = "SELECT 'Hello World' as Message";
    await using var reader = await command.ExecuteReaderAsync();
    while (await reader.ReadAsync())
    {
        Console.WriteLine($"Greeting from Spanner: {reader.GetString(0)}");
    }
}

Para mais informações, consulte o repositório do GitHub do driver ADO.NET do Spanner.

Recursos compatíveis

O diretório de código de exemplos do driver ADO.NET do Spanner contém exemplos prontos para execução de recursos do Spanner usados com frequência.

Dicas de desempenho

Para ter a melhor performance possível ao usar o driver ADO.NET do Spanner, siga estas práticas recomendadas:

A seguir