Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 podem ser configuradas definindo um nome invariável do provedor (ProviderName) e a cadeia de conexão (ConnectionString) ou usando apenas um nome da configuração 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 a ser executada é configurada em sua propriedade Sql e os parâmetros são passados através da coleção 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 |
|---|---|
| Nome do Fornecedor | Nome invariável do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
| string de conexão | Cadeia de conexão para conectar ao banco 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. |
| TipoComando | Tipo do DbCommand a ser executado. |
| SQL | O comando SQL a ser executado. |
| Parâmetros | Coleção de parâmetros de consulta SQL. |
| RegistrosAfetados | 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 podem ser configuradas definindo um nome invariável do provedor (ProviderName) e a cadeia de conexão (ConnectionString) ou usando apenas um nome da configuração 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 a ser executada é configurada em sua propriedade Sql e os parâmetros são passados através da coleção 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 |
|---|---|
| Nome do Fornecedor | Nome invariável do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
| string de conexão | Cadeia de conexão para conectar ao banco de dados. Se esse argumento é definido, então ProviderName também deve ser definido. |
| TipoComando | Tipo do DbCommand a ser executado. |
| NomeDeConfiguração | 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. |
| Resultado | Valor 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 pega um registro em DbDataReader e o mapeia para o objeto a ser retornado.
Informações de conexão podem ser configuradas definindo um nome invariável do provedor (ProviderName) e a cadeia de conexão (ConnectionString) ou usando apenas um nome da configuração 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 a ser executada é configurada em sua propriedade Sql e os parâmetros são passados através da coleção Parameters.
Os resultados da consulta SQL são recuperados usando DbDataReader. A atividade itera através de DbDataReader e mapeia as linhas em DbDataReader em 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 serializado para XAML e ser criado declarativamente (quaisquer atividades existentes podem 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 |
|---|---|
| Nome do Fornecedor | Nome invariável do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
| string de conexão | Cadeia de conexão para conectar ao banco de dados. Se esse argumento é definido, então ProviderName também deve ser definido. |
| TipoComando | Tipo do 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 criada declarativamente (quaisquer atividades existentes podem participar no mapeamento). |
| Resultado | 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íncronos.
Informações de conexão podem ser configuradas definindo um nome invariável do provedor (ProviderName) e a cadeia de conexão (ConnectionString) ou usando apenas um nome da configuração 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 a ser executada é configurada em sua propriedade Sql e os parâmetros são passados através da coleção 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 |
|---|---|
| Nome do Fornecedor | Nome invariável do provedor ADO.NET. Se esse argumento é definido, então ConnectionString também deve ser definido. |
| string de conexão | Cadeia de conexão para conectar ao banco 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. |
| TipoComando | Tipo do DbCommand a ser executado. |
| SQL | O comando SQL a ser executado. |
| Parâmetros | Coleção de parâmetros de consulta SQL. |
| Resultado | 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
Todas as DbActivities compartilham 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 a tabela Roles
- Cria a tabela Employees.
- Insere três registros na tabela de Roles.
- Insere doze registros na tabela Employees.
Para executar Setup.cmd
Abra um prompt de comando.
Acesse a pasta de exemplo DbActivities.
Digite "setup.cmd" e pressione Enter.
Observação
Setup.cmd tenta instalar o exemplo na instância do SQL Express em seu computador local. Se você deseja instalá-lo em outra instância do SQL Server, edite 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