Aktivity přístupu k databázi
Aktivity přístupu k databázi umožňují přístup k databázi v rámci pracovního postupu. Tyto aktivity umožňují přístupu k databázím načítat nebo upravovat informace a používat ADO.NET pro přístup k databázi.
Databázové aktivity
Následující části podrobně uvádějí seznam aktivit zahrnutých v ukázce DbActivities.
DbUpdate
Spustí dotaz SQL, který vytváří změny v databázi (vložení, aktualizace, odstranění a další úpravy).
Tato třída provádí svou práci asynchronně (odvozuje a AsyncCodeActivity používá její asynchronní funkce).
Informace o připojení je možné nakonfigurovat nastavením invariantního názvu poskytovatele (ProviderName
) a připojovací řetězec (ConnectionString
) nebo použitím názvu konfigurace připojovací řetězec (ConfigFileSectionName
) z konfiguračního souboru aplikace.
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Dotaz, který se má spustit, je nakonfigurovaný ve své Sql
vlastnosti a parametry se předávají prostřednictvím Parameters
kolekce.
Po DbUpdate
spuštění se v AffectedRecords
vlastnosti vrátí počet ovlivněných záznamů.
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; }
}
Argument | Popis |
---|---|
ProviderName | ADO.NET invariantní název zprostředkovatele. Pokud je tento argument nastavený, ConnectionString musí být také nastaven. |
ConnectionString | Připojovací řetězec pro připojení k databázi. Pokud je tento argument nastavený, ProviderName musí být také nastaven. |
ConfigName | Název oddílu konfiguračního souboru, kde jsou uloženy informace o připojení. Pokud je tento argument nastavený ProviderName a ConnectionString nevyžaduje se. |
CommandType | DbCommand Typ spuštění. |
Sql | Příkaz SQL, který se má spustit. |
Parametry | Kolekce parametrů dotazu SQL |
Ovlivněnézáznamy | Počet záznamů ovlivněných poslední operací |
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
DbQueryScalar
Spustí dotaz, který načte jednu hodnotu z databáze.
Tato třída provádí svou práci asynchronně (odvozuje a AsyncCodeActivity<TResult> používá její asynchronní funkce).
Informace o připojení je možné nakonfigurovat nastavením invariantního názvu poskytovatele (ProviderName
) a připojovací řetězec (ConnectionString
) nebo použitím názvu konfigurace připojovací řetězec (ConfigFileSectionName
) z konfiguračního souboru aplikace.
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Dotaz, který se má spustit, je nakonfigurovaný ve své Sql
vlastnosti a parametry se předávají prostřednictvím Parameters
kolekce.
Po DbQueryScalar
spuštění se skalár vrátí v argumentu Result out
(typu TResult
, který je definován v základní třídě 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; }
}
Argument | Popis |
---|---|
ProviderName | ADO.NET invariantní název zprostředkovatele. Pokud je tento argument nastavený, ConnectionString musí být také nastaven. |
ConnectionString | Připojovací řetězec pro připojení k databázi. Pokud je tento argument nastavený, ProviderName musí být také nastaven. |
CommandType | DbCommand Typ spuštění. |
ConfigName | Název oddílu konfiguračního souboru, kde jsou uloženy informace o připojení. Pokud je tento argument nastavený ProviderName a ConnectionString nevyžaduje se. |
Sql | Příkaz SQL, který se má spustit. |
Parametry | Kolekce parametrů dotazu SQL |
Výsledek | Skalární, který se získá po spuštění dotazu. Tento argument je typu TResult . |
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
DbQuery
Spustí dotaz, který načte seznam objektů. Po spuštění dotazu se spustí funkce mapování (může to být Func<TResult><DbDataReader
,> TResult
nebo<DbDataReader
ActivityFunc<TResult> , ). TResult
> Tato funkce mapování získá záznam v objektu DbDataReader
, který se má vrátit, a namapuje ho na objekt, který se má vrátit.
Informace o připojení je možné nakonfigurovat nastavením invariantního názvu poskytovatele (ProviderName
) a připojovací řetězec (ConnectionString
) nebo použitím názvu konfigurace připojovací řetězec (ConfigFileSectionName
) z konfiguračního souboru aplikace.
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Dotaz, který se má spustit, je nakonfigurovaný ve své Sql
vlastnosti a parametry se předávají prostřednictvím Parameters
kolekce.
Výsledky dotazu SQL se načtou pomocí příkazu DbDataReader
. Aktivita prochází a mapuje DbDataReader
řádky v DbDataReader
instanci TResult
. Uživatel DbQuery
musí poskytnout kód mapování a to lze provést dvěma způsoby: pomocí ,DbDataReader
> TResult
Func<TResult><nebo<DbDataReader
ActivityFunc<TResult> , . TResult
> V prvním případě se mapa provádí v jediném impulsu provádění. Proto je rychlejší, ale nelze ji serializovat do XAML. V posledním případě se mapa provádí v několika impulsech. Proto může být pomalejší, ale dá se serializovat do XAML a vytvořit deklarativním způsobem (jakákoli existující aktivita se může účastnit mapování).
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; }
}
Argument | Popis |
---|---|
ProviderName | ADO.NET invariantní název zprostředkovatele. Pokud je tento argument nastavený, ConnectionString musí být také nastaven. |
ConnectionString | Připojovací řetězec pro připojení k databázi. Pokud je tento argument nastavený, ProviderName musí být také nastaven. |
CommandType | DbCommand Typ spuštění. |
ConfigName | Název oddílu konfiguračního souboru, kde jsou uloženy informace o připojení. Pokud je tento argument nastavený ProviderName a ConnectionString nevyžaduje se. |
Sql | Příkaz SQL, který se má spustit. |
Parametry | Kolekce parametrů dotazu SQL |
Kartograf | Funkce mapování (Func<TResult>DbDataReader <, TResult >), která přebírá záznam ve DataReader získaném výsledku provádění dotazu a vrací instanci objektu typuTResult , který se má přidat do Result kolekce.V tomto případě se mapování provádí v jednom impulsu provádění, ale nelze jej deklarativním způsobem vytvořit pomocí návrháře. |
MapperFunc | Funkce mapování (ActivityFunc<TResult>DbDataReader <, TResult >), která přebírá záznam ve DataReader získaném výsledku provádění dotazu a vrací instanci objektu typuTResult , který se má přidat do Result kolekce.V tomto případě se mapování provádí v několika impulsech provádění. Tuto funkci lze serializovat do XAML a vytvořit deklarativní (jakákoli existující aktivita se může účastnit mapování). |
Výsledek | Seznam objektů získaných v důsledku spuštění dotazu a spuštění funkce mapování pro každý záznam v objektu DataReader . |
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
DbQueryDataSet
Spustí dotaz, který vrátí hodnotu DataSet. Tato třída provádí svou práci asynchronně. Odvozuje AsyncCodeActivity<TResult
> a používá její asynchronní funkce.
Informace o připojení je možné nakonfigurovat nastavením invariantního názvu poskytovatele (ProviderName
) a připojovací řetězec (ConnectionString
) nebo použitím názvu konfigurace připojovací řetězec (ConfigFileSectionName
) z konfiguračního souboru aplikace.
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Dotaz, který se má spustit, je nakonfigurovaný ve své Sql
vlastnosti a parametry se předávají prostřednictvím Parameters
kolekce.
Po provedení je DbQueryDataSet
vrácen v argumentu Result out
(typu TResult
, který je definován v základní třídě AsyncCodeActivity<TResult>).DataSet
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; }
}
Argument | Popis |
---|---|
ProviderName | ADO.NET invariantní název zprostředkovatele. Pokud je tento argument nastavený, ConnectionString musí být také nastaven. |
ConnectionString | Připojovací řetězec pro připojení k databázi. Pokud je tento argument nastavený, ProviderName musí být také nastaven. |
ConfigName | Název oddílu konfiguračního souboru, kde jsou uloženy informace o připojení. Pokud je tento argument nastavený ProviderName a ConnectionString nevyžaduje se. |
CommandType | DbCommand Typ spuštění. |
Sql | Příkaz SQL, který se má spustit. |
Parametry | Kolekce parametrů dotazu SQL |
Výsledek | DataSet který se získá po provedení dotazu. |
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Konfigurace informací o připojení
Všechny aktivity databáze sdílejí stejné konfigurační parametry. Dají se nakonfigurovat dvěma způsoby:
ConnectionString + InvariantName
: Nastavte invariantní název a připojovací řetězec zprostředkovatele 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
: Nastavte název oddílu konfigurace, který obsahuje informace o připojení.<connectionStrings> <add name="DbActivitiesSample" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLExpress;Initial Catalog=DbActivitiesSample;Integrated Security=true"/> </connectionStrings>
V aktivitě:
Activity dbSelectCount = new DbQueryScalar<int>() { ConfigName = "DbActivitiesSample", Sql = "SELECT COUNT(*) FROM Roles" };
Důležité
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Pokud se připojujete k Azure SQL, spravované identity pro prostředky Azure se doporučují metodou ověřování.
Spuštění této ukázky
Pokyny pro nastavení
Tato ukázka používá databázi. S ukázkou je k dispozici skript pro nastavení a načtení (Setup.cmd). Tento soubor musíte spustit pomocí příkazového řádku.
Skript Setup.cmd vyvolá soubor skriptu CreateDb.sql, který obsahuje příkazy SQL, které dělají toto:
- Vytvoří databázi s názvem DbActivitiesSample.
- Vytvoří tabulku Role.
- Vytvoří tabulku Zaměstnanci.
- Vloží do tabulky Role tři záznamy.
- Vloží do tabulky Employees dvanáct záznamů.
Spuštění Setup.cmd
Otevřete příkazový řádek.
Přejděte do ukázkové složky DbActivities.
Zadejte "setup.cmd" a stiskněte Enter.
Poznámka:
Setup.cmd se pokusí nainstalovat ukázku v instanci SqlExpress místního počítače. Pokud ho chcete nainstalovat do jiné instance SQL Serveru, upravte Setup.cmd s novým názvem instance.
Chcete-li spustit ukázku
- Otevřete řešení v sadě Visual Studio.
- Pokud chcete řešení zkompilovat, stiskněte kombinaci kláves Ctrl+Shift+B.
- Pokud chcete ukázku spustit bez ladění, stiskněte Ctrl+F5.
Pokud chcete ukázkovou databázi odinstalovat, spusťte Cleanup.cmd z ukázkové složky na příkazovém řádku.
Důležité
Ukázky už můžou být na vašem počítači nainstalované. Než budete pokračovat, zkontrolujte následující (výchozí) adresář.
<InstallDrive>:\WF_WCF_Samples
Pokud tento adresář neexistuje, přejděte do ukázek Windows Communication Foundation (WCF) a Windows Workflow Foundation (WF) pro .NET Framework 4 a stáhněte si všechny ukázky WCF (Windows Communication Foundation) a WF. Tato ukázka se nachází v následujícím adresáři.
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\DbActivities