Atividades de acesso à base de dados
As atividades de acesso ao banco de dados permitem que você acesse um banco de dados dentro de 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 banco de dados
As seções a seguir detalham a lista de atividades incluídas no exemplo DbActivities.
DbUpdate
Executa uma consulta SQL que produz uma modificação no banco de dados (inserção, atualização, exclusão e outras modificações).
Essa classe executa seu trabalho de forma assíncrona (deriva e AsyncCodeActivity usa seus recursos assíncronos).
As informações de conexão podem ser configuradas definindo um nome invariante do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou apenas usando um nome de configuração da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
A consulta a ser executada é configurada em sua Sql
propriedade e os parâmetros são passados Parameters
pela coleção.
Depois DbUpdate
de executado, o número de registros afetados é retornado na AffectedRecords
propriedade.
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 | Description |
---|---|
ProviderName | ADO.NET nome invariante do provedor. Se este argumento é definido, então o ConnectionString deve também ser definido. |
ConnectionString | Cadeia de conexão para se conectar ao banco de dados. Se este 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 são armazenadas. Quando este argumento é definido ProviderName e ConnectionString não são necessários. |
Tipo de comando | Tipo de seringa DbCommand a ser executada. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção dos parâmetros da consulta SQL. |
AfetadosRegistros | Número de registos afetados pela última operação. |
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
DbQueryScalar
Executa uma consulta que recupera um único valor do banco de dados.
Essa classe executa seu trabalho de forma assíncrona (deriva e AsyncCodeActivity<TResult> usa seus recursos assíncronos).
As informações de conexão podem ser configuradas definindo um nome invariante do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou apenas usando um nome de configuração da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
A consulta a ser executada é configurada em sua Sql
propriedade e os parâmetros são passados Parameters
pela coleção.
Depois DbQueryScalar
de executado, o escalar é retornado no Result out
argumento (do tipo TResult
, que é definido na classe AsyncCodeActivity<TResult>base ).
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 | Description |
---|---|
ProviderName | ADO.NET nome invariante do provedor. Se este argumento é definido, então o ConnectionString deve também ser definido. |
ConnectionString | Cadeia de conexão para se conectar ao banco de dados. Se este argumento é definido, então ProviderName também deve ser definido. |
Tipo de comando | Tipo de seringa DbCommand a ser executada. |
ConfigName | Nome da seção do arquivo de configuração onde as informações de conexão são armazenadas. Quando este argumento é definido ProviderName e ConnectionString não são necessários. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção dos parâmetros da consulta SQL. |
Result | Escalar que é obtido depois que a consulta é executada. Este argumento é do tipo TResult . |
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
DbQuery
Executa uma consulta que recupera uma lista de objetos. Depois que a consulta é executada, uma função de mapeamento é executada (pode ser Func<TResult>DbDataReader
<,> TResult
ou um<DbDataReader
ActivityFunc<TResult> , ). TResult
> Essa função de mapeamento obtém um registro em um DbDataReader
e o mapeia para o objeto a ser retornado.
As informações de conexão podem ser configuradas definindo um nome invariante do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou apenas usando um nome de configuração da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
A consulta a ser executada é configurada em sua Sql
propriedade e os parâmetros são passados Parameters
pela coleção.
Os resultados da consulta SQL são recuperados usando um DbDataReader
arquivo . A atividade itera através do e mapeia DbDataReader
as linhas no DbDataReader
para uma instância de TResult
. O usuário do tem que fornecer o código de DbQuery
mapeamento e isso pode ser feito de duas maneiras: usando umDbDataReader
Func<TResult>< ,> TResult
ou um<DbDataReader
ActivityFunc<TResult> , . TResult
> No primeiro caso, o mapa é feito em um único pulso de execução. Portanto, é mais rápido, mas isso não pode ser serializado para XAML. No último caso, o mapa é realizado em múltiplos pulsos. Portanto, ele pode ser mais lento, mas pode ser serializado para XAML e criado declarativamente (qualquer atividade existente pode participar do 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 | Description |
---|---|
ProviderName | ADO.NET nome invariante do provedor. Se este argumento é definido, então o ConnectionString deve também ser definido. |
ConnectionString | Cadeia de conexão para se conectar ao banco de dados. Se este argumento é definido, então ProviderName também deve ser definido. |
Tipo de comando | Tipo de seringa DbCommand a ser executada. |
ConfigName | Nome da seção do arquivo de configuração onde as informações de conexão são armazenadas. Quando este argumento é definido ProviderName e ConnectionString não são necessários. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção dos parâmetros da consulta SQL. |
Mapeador | Função de mapeamento (Func<TResult>DbDataReader <, TResult >) que usa um registro no DataReader obtido como resultado da execução da consulta e retorna uma instância de um objeto do tipo TResult a ser adicionado à Result coleção.Nesse caso, o mapeamento é feito em um único pulso de execução, mas não pode ser criado declarativamente usando o designer. |
MapeadorFunc | Função de mapeamento (ActivityFunc<TResult>DbDataReader <, TResult >) que usa um registro no DataReader obtido como resultado da execução da consulta e retorna uma instância de um objeto do tipo TResult a ser adicionado à Result coleção.Neste caso, o mapeamento é feito em múltiplos pulsos de execução. Essa função pode ser serializada para XAML e criada declarativamente (qualquer atividade existente pode participar do mapeamento). |
Result | Lista de objetos obtidos como resultado da execução da consulta e da execução da função de mapeamento para cada registro no DataReader . |
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
DbQueryDataSet
Executa uma consulta que retorna um DataSetarquivo . Esta classe executa seu trabalho de forma assíncrona. Ele deriva e AsyncCodeActivity<TResult
> usa seus recursos assíncronos.
As informações de conexão podem ser configuradas definindo um nome invariante do provedor (ProviderName
) e a cadeia de conexão (ConnectionString
) ou apenas usando um nome de configuração da cadeia de conexão (ConfigFileSectionName
) do arquivo de configuração do aplicativo.
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
A consulta a ser executada é configurada em sua Sql
propriedade e os parâmetros são passados Parameters
pela coleção.
Depois que o é executado, DbQueryDataSet
o é retornado no Result out
argumento (do tipo TResult
, que é definido na classe AsyncCodeActivity<TResult>DataSet
base).
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 | Description |
---|---|
ProviderName | ADO.NET nome invariante do provedor. Se este argumento é definido, então o ConnectionString deve também ser definido. |
ConnectionString | Cadeia de conexão para se conectar ao banco de dados. Se este 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 são armazenadas. Quando este argumento é definido ProviderName e ConnectionString não são necessários. |
Tipo de comando | Tipo de seringa DbCommand a ser executada. |
Sql | O comando SQL a ser executado. |
Parâmetros | Coleção dos parâmetros da consulta SQL. |
Result | DataSet que é obtido após a execução da consulta. |
Importante
A Microsoft recomenda que você use 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 serão o método de autenticação recomendado.
Configurar informações de conexão
Todos os DbActivities compartilham os mesmos parâmetros de configuração. Eles podem ser configurados de duas maneiras:
ConnectionString + InvariantName
: Defina o nome invariante do provedor de ADO.NET e a cadeia de conexão.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 as 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 que você use 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 serão o método de autenticação recomendado.
Executar este exemplo
Instruções de instalação
Este exemplo usa um banco de dados. Um script de configuração e carregamento (Setup.cmd) é fornecido com o exemplo. Você deve executar esse arquivo usando o prompt de comando.
O script Setup.cmd invoca o arquivo de script CreateDb.sql, que contém comandos SQL que fazem o seguinte:
- Cria um banco de dados chamado DbActivitiesSample.
- Cria a tabela Funções.
- Cria a tabela Funcionários.
- Insere três registros na tabela Funções.
- Insere doze registros na tabela Funcionários.
Para executar Setup.cmd
Abra uma linha de comandos.
Vá para a pasta de exemplo DbActivities.
Digite "setup.cmd" e pressione Enter.
Nota
Setup.cmd tenta instalar o exemplo em sua instância SqlExpress da máquina local. Se você quiser instalá-lo em outra instância do SQL Server, edite-Setup.cmd com o novo nome da instância.
Para executar o exemplo
- Abra a solução no Visual Studio.
- Para compilar 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 da pasta de exemplo em um prompt de comando.
Importante
As amostras podem já estar instaladas na sua máquina. Verifique o seguinte diretório (padrão) antes de continuar.
<InstallDrive>:\WF_WCF_Samples
Se esse diretório não existir, vá para Exemplos do Windows Communication Foundation (WCF) e do Windows Workflow Foundation (WF) para .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