Atividades de acesso a base de dados
As atividades de acesso a base de dados permitem que você acesse um base de dados em um fluxo de trabalho. Essas atividades permitem acessar bancos de dados para recuperar ou modificar informações e usar ADO.NET para acessar o banco de dados.
Atividades de base de dados
As seções a seguir detalham a lista de atividades incluídas no exemplo DbActivities.
DbUpdate
Executa uma consulta SQL que gerencia uma alteração na base de dados (inserção, atualização, exclusão, e outras alterações).
Essa classe executa seu trabalho de forma assíncrona (deriva de AsyncCodeActivity e usa seus recursos assíncronas).
Informações de conexão pode ser configurado definindo um nome invariável do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou usando apenas um nome da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
A consulta seja executada é configurado em sua propriedade de Sql
e os parâmetros são passados através da coleção de Parameters
.
Após DbUpdate
é executado, o número de registros afetados é retornado na propriedade de AffectedRecords
.
Public class DbUpdate: AsyncCodeActivity
{
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DefaultValue(null)]
public InArgument<string> ProviderName { get; set; }
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DependsOn("ProviderName")]
[DefaultValue(null)]
public InArgument<string> ConnectionString { get; set; }
[RequiredArgument]
[OverloadGroup("ConfigFileSectionName")]
[DefaultValue(null)]
public InArgument<string> ConfigName { get; set; }
[DefaultValue(null)]
public CommandType CommandType { get; set; }
[RequiredArgument]
public InArgument<string> Sql { get; set; }
[DependsOn("Sql")]
[DefaultValue(null)]
public IDictionary<string, Argument> Parameters { get; }
[DependsOn("Parameters")]
public OutArgument<int> AffectedRecords { get; set; }
}
Argumento | Descrição |
---|---|
ProviderName | Invariável nome do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
ConnectionString | Cadeia de conexão para se conectar a base de dados. Se esse argumento é definido, então ProviderName também deve ser definido. |
ConfigName | Nome da seção do arquivo de configuração onde as informações de conexão é armazenada. Quando esse argumento é ajustado ProviderName e ConnectionString não são necessários. |
CommandType | Tipo de DbCommand a ser executado. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção de parâmetros de consulta SQL. |
AffectedRecords | Número de registros afetados pela operação a mais recente. |
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
DbQueryScalar
Executa uma consulta que recupera um único valor de base de dados.
Essa classe executa seu trabalho de forma assíncrona (deriva de AsyncCodeActivity<TResult> e usa seus recursos assíncronas).
Informações de conexão pode ser configurado definindo um nome invariável do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou usando apenas um nome da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
A consulta seja executada é configurado em sua propriedade de Sql
e os parâmetros são passados através da coleção de Parameters
.
Após a execução de DbQueryScalar
, o escalar é retornado no argumento Result out
(do tipo TResult
, que é definido na classe base AsyncCodeActivity<TResult>).
public class DbQueryScalar<TResult> : AsyncCodeActivity<TResult>
{
// public arguments
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DefaultValue(null)]
public InArgument<string> ProviderName { get; set; }
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DependsOn("ProviderName")]
[DefaultValue(null)]
public InArgument<string> ConnectionString { get; set; }
[RequiredArgument]
[OverloadGroup("ConfigFileSectionName")]
[DefaultValue(null)]
public InArgument<string> ConfigName { get; set; }
[DefaultValue(null)]
public CommandType CommandType { get; set; }
[RequiredArgument]
public InArgument<string> Sql { get; set; }
[DependsOn("Sql")]
[DefaultValue(null)]
public IDictionary<string, Argument> Parameters { get; }
}
Argumento | Descrição |
---|---|
ProviderName | Invariável nome do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
ConnectionString | Cadeia de conexão para se conectar a base de dados. Se esse argumento é definido, então ProviderName também deve ser definido. |
CommandType | Tipo de DbCommand a ser executado. |
ConfigName | Nome da seção do arquivo de configuração onde as informações de conexão é armazenada. Quando esse argumento é ajustado ProviderName e ConnectionString não são necessários. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção de parâmetros de consulta SQL. |
Result | Escalar que é obtido depois que a consulta é executada. Esse argumento é do tipo TResult . |
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
DbQuery
Executa uma consulta que recupera uma lista de objetos. Após a execução da consulta, uma função de mapeamento é executada (pode ser Func<TResult><DbDataReader
, TResult
> ou um ActivityFunc<TResult><DbDataReader
, TResult
>). Essa função de mapeamento obtém um registro em DbDataReader
e mapear-lo ao objeto a ser retornado.
Informações de conexão pode ser configurado definindo um nome invariável do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou usando apenas um nome da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
A consulta seja executada é configurado em sua propriedade de Sql
e os parâmetros são passados através da coleção de Parameters
.
Os resultados da consulta SQL são recuperados usando DbDataReader
. A atividade itera com DbDataReader
e mapeia as linhas em DbDataReader
a uma instância de TResult
. O usuário de DbQuery
deve fornecer o código de mapeamento e isso pode ser feito de duas maneiras: usando um Func<TResult><DbDataReader
, TResult
> ou um ActivityFunc<TResult><DbDataReader
, TResult
>. No primeiro caso, o mapa é feito em um único pulso de execução. Portanto, é mais rápido, mas isto não pode ser serializado em XAML. No último caso, o mapa é executado em vários pulsos. Portanto, pode ser mais lento mas pode ser serializada para XAML e ser criado declarativamente (quaisquer atividades existente pode participar no mapeamento).
public class DbQuery<TResult> : AsyncCodeActivity<IList<TResult>> where TResult : class
{
// public arguments
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DefaultValue(null)]
public InArgument<string> ProviderName { get; set; }
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DependsOn("ProviderName")]
[DefaultValue(null)]
public InArgument<string> ConnectionString { get; set; }
[RequiredArgument]
[OverloadGroup("ConfigFileSectionName")]
[DefaultValue(null)]
public InArgument<string> ConfigName { get; set; }
[DefaultValue(null)]
public CommandType CommandType { get; set; }
[RequiredArgument]
public InArgument<string> Sql { get; set; }
[DependsOn("Sql")]
[DefaultValue(null)]
public IDictionary<string, Argument> Parameters { get; }
[OverloadGroup("DirectMapping")]
[DefaultValue(null)]
public Func<DbDataReader, TResult> Mapper { get; set; }
[OverloadGroup("MultiplePulseMapping")]
[DefaultValue(null)]
public ActivityFunc<DbDataReader, TResult> MapperFunc { get; set; }
}
Argumento | Descrição |
---|---|
ProviderName | Invariável nome do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
ConnectionString | Cadeia de conexão para se conectar a base de dados. Se esse argumento é definido, então ProviderName também deve ser definido. |
CommandType | Tipo de DbCommand a ser executado. |
ConfigName | Nome da seção do arquivo de configuração onde as informações de conexão é armazenada. Quando esse argumento é ajustado ProviderName e ConnectionString não são necessários. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção de parâmetros de consulta SQL. |
Mapeador | Função de mapeamento (Func<TResult><DbDataReader , TResult >) que utiliza um registro em DataReader obtido como resultado da execução da consulta e retorna uma instância de um objeto do tipo TResult a ser adicionada à coleção Result .Nesse caso, o mapeamento é feito em um único pulso de execução, mas não pode ser criado declarativamente usando o designer. |
MapperFunc | Função de mapeamento (ActivityFunc<TResult><DbDataReader , TResult >) que utiliza um registro em DataReader obtido como resultado da execução da consulta e retorna uma instância de um objeto do tipo TResult a ser adicionada à coleção Result .Nesse caso, o mapeamento é feito em vários pulsos de execução. Essa função pode ser serializada para XAML e ser criado declarativamente (quaisquer atividades existente pode participar no mapeamento). |
Result | Lista de objetos obtidos como o resultado de executar a consulta e executar a função de mapeamento para cada registro em DataReader . |
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
DbQueryDataSet
Executa uma consulta que retorna DataSet. Essa classe executa seu trabalho de forma assíncrona. Deriva de AsyncCodeActivity<TResult
> e usa seus recursos assíncronas.
Informações de conexão pode ser configurado definindo um nome invariável do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou usando apenas um nome da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
A consulta seja executada é configurado em sua propriedade de Sql
e os parâmetros são passados através da coleção de Parameters
.
Após a execução de DbQueryDataSet
, DataSet
é retornado no argumento Result out
(do tipo TResult
, que é definido na classe base AsyncCodeActivity<TResult>).
public class DbQueryDataSet : AsyncCodeActivity<DataSet>
{
// public arguments
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DefaultValue(null)]
public InArgument<string> ProviderName { get; set; }
[RequiredArgument]
[OverloadGroup("ConnectionString")]
[DependsOn("ProviderName")]
[DefaultValue(null)]
public InArgument<string> ConnectionString { get; set; }
[RequiredArgument]
[OverloadGroup("ConfigFileSectionName")]
[DefaultValue(null)]
public InArgument<string> ConfigName { get; set; }
[DefaultValue(null)]
public CommandType CommandType { get; set; }
[RequiredArgument]
public InArgument<string> Sql { get; set; }
[DependsOn("Sql")]
[DefaultValue(null)]
public IDictionary<string, Argument> Parameters { get; }
}
Argumento | Descrição |
---|---|
ProviderName | Invariável nome do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
ConnectionString | Cadeia de conexão para se conectar a base de dados. Se esse argumento é definido, então ProviderName também deve ser definido. |
ConfigName | Nome da seção do arquivo de configuração onde as informações de conexão é armazenada. Quando esse argumento é ajustado ProviderName e ConnectionString não são necessários. |
CommandType | Tipo de DbCommand a ser executado. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção de parâmetros de consulta SQL. |
Result | DataSet que é obtido depois que a consulta é executada. |
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
Configurar informações de conexão
Qualquer compartilhamento de DbActivities os mesmos parâmetros de configuração. Podem ser configurados em duas maneiras:
ConnectionString + InvariantName
: Defina o nome e a cadeia de conexão invariável do provedor ADO.NET.Activity dbSelectCount = new DbQueryScalar<DateTime>() { ProviderName = "System.Data.SqlClient", ConnectionString = @"Data Source=.\SQLExpress; Initial Catalog=DbActivitiesSample; Integrated Security=True", Sql = "SELECT GetDate()" };
ConfigName
: Defina o nome da seção de configuração que contém informações de conexão.<connectionStrings> <add name="DbActivitiesSample" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLExpress;Initial Catalog=DbActivitiesSample;Integrated Security=true"/> </connectionStrings>
Na atividade:
Activity dbSelectCount = new DbQueryScalar<int>() { ConfigName = "DbActivitiesSample", Sql = "SELECT COUNT(*) FROM Roles" };
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. Se você estiver se conectando ao SQL do Azure, as Identidades gerenciadas para recursos do Azure é o método de autenticação recomendado.
Executar esta amostra
Instruções de configuração
Este exemplo usa uma base de dados. Um script de instalação e de carregamento (Setup.cmd) é fornecido com o exemplo. Você deve executar esse arquivo usando o prompt de comando.
O script de Setup.cmd chama o arquivo de script CreateDb.sql, que contém os comandos SQL que façam o seguinte:
- Cria um base de dados chamado DbActivitiesSample.
- Cria as funções da tabela.
- Cria a tabela employees.
- Insere três registros nas funções da tabela.
- Insere doze registros na tabela employees.
Para executar Setup.cmd
Abra um prompt de comando.
Vá para a pasta de DbActivities.
Digite "setup.cmd" e pressione Enter.
Observação
Setup.cmd tentar instalar o exemplo em sua instância de SqlExpress do computador local. Se você deseja instalá-lo em outra instância do SQL server, a edição Setup.cmd com o novo nome da instância.
Para executar a amostra
- Abra a solução no Visual Studio.
- Para criar a solução, pressione Ctrl+Shift+B.
- Para executar o exemplo sem depuração, pressione Ctrl+F5.
Para desinstalar o banco de dados de exemplo, execute Cleanup.cmd na pasta de exemplo em um prompt de comando.
Importante
Os exemplos podem já estar instalados no seu computador. Verifique o seguinte diretório (padrão) antes de continuar.
<InstallDrive>:\WF_WCF_Samples
Se esse diretório não existir, vá para Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) Samples for .NET Framework 4 para baixar todos os exemplos do Windows Communication Foundation (WCF) e WF. Este exemplo está localizado no seguinte diretório.
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\DbActivities