Activiteiten voor databasetoegang
Met databasetoegangsactiviteiten hebt u toegang tot een database in een werkstroom. Met deze activiteiten kunnen databases gegevens ophalen of wijzigen en ADO.NET gebruiken om toegang te krijgen tot de database.
Databaseactiviteiten
De volgende secties beschrijven de lijst met activiteiten die zijn opgenomen in het dbActivities-voorbeeld.
DbUpdate
Hiermee wordt een SQL-query uitgevoerd die een wijziging in de database produceert (invoegen, bijwerken, verwijderen en andere wijzigingen).
Deze klasse voert het werk asynchroon uit (deze is afgeleid van AsyncCodeActivity en maakt gebruik van de asynchrone mogelijkheden).
De verbindingsgegevens kunnen worden geconfigureerd door een provider invariantnaam (ProviderName
) en de verbindingsreeks (ConnectionString
) in te stellen of alleen een verbindingsreeks configuratienaam (ConfigFileSectionName
) uit het configuratiebestand van de toepassing te gebruiken.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
De query die moet worden uitgevoerd, wordt geconfigureerd in Sql
de eigenschap en de parameters worden doorgegeven via de Parameters
verzameling.
Nadat DbUpdate
deze is uitgevoerd, wordt het aantal betrokken records geretourneerd in de AffectedRecords
eigenschap.
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 | Beschrijving |
---|---|
ProviderName | ADO.NET provider invariantnaam. Als dit argument is ingesteld, moet het ConnectionString ook worden ingesteld. |
ConnectionString | Verbindingsreeks om verbinding te maken met de database. Als dit argument is ingesteld, moet u ProviderName ook worden ingesteld. |
ConfigName | Naam van de sectie configuratiebestand waarin de verbindingsgegevens worden opgeslagen. Wanneer dit argument is ingesteld ProviderName en ConnectionString niet vereist is. |
CommandType | Het type dat DbCommand moet worden uitgevoerd. |
Sql | De SQL-opdracht die moet worden uitgevoerd. |
Parameters | Verzameling van de parameters van de SQL-query. |
AffectedRecords | Het aantal records dat wordt beïnvloed door de laatste bewerking. |
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
DbQueryScalar
Hiermee wordt een query uitgevoerd waarmee één waarde uit de database wordt opgehaald.
Deze klasse voert het werk asynchroon uit (deze is afgeleid van AsyncCodeActivity<TResult> en maakt gebruik van de asynchrone mogelijkheden).
De verbindingsgegevens kunnen worden geconfigureerd door een provider invariantnaam (ProviderName
) en de verbindingsreeks (ConnectionString
) in te stellen of alleen een verbindingsreeks configuratienaam (ConfigFileSectionName
) uit het configuratiebestand van de toepassing te gebruiken.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
De query die moet worden uitgevoerd, wordt geconfigureerd in Sql
de eigenschap en de parameters worden doorgegeven via de Parameters
verzameling.
Nadat DbQueryScalar
de scalaire waarde is uitgevoerd, wordt de scalaire waarde geretourneerd in het argument (van het Result out
type TResult
, dat is gedefinieerd in de basisklasse 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 | Beschrijving |
---|---|
ProviderName | ADO.NET provider invariantnaam. Als dit argument is ingesteld, moet het ConnectionString ook worden ingesteld. |
ConnectionString | Verbindingsreeks om verbinding te maken met de database. Als dit argument is ingesteld, moet u ProviderName ook worden ingesteld. |
CommandType | Het type dat DbCommand moet worden uitgevoerd. |
ConfigName | Naam van de sectie configuratiebestand waarin de verbindingsgegevens worden opgeslagen. Wanneer dit argument is ingesteld ProviderName en ConnectionString niet vereist is. |
Sql | De SQL-opdracht die moet worden uitgevoerd. |
Parameters | Verzameling van de parameters van de SQL-query. |
Resultaat | Scalaire gegevens die worden verkregen nadat de query is uitgevoerd. Dit argument is van het type TResult . |
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
DbQuery
Hiermee wordt een query uitgevoerd waarmee een lijst met objecten wordt opgehaald. Nadat de query is uitgevoerd, wordt een toewijzingsfunctie uitgevoerd (dit kan Func<TResult>DbDataReader
<,> TResult
of een<DbDataReader
ActivityFunc<TResult> , ). TResult
> Met deze toewijzingsfunctie wordt een record in een DbDataReader
record opgehaald en toegewezen aan het object dat moet worden geretourneerd.
De verbindingsgegevens kunnen worden geconfigureerd door een provider invariantnaam (ProviderName
) en de verbindingsreeks (ConnectionString
) in te stellen of alleen een verbindingsreeks configuratienaam (ConfigFileSectionName
) uit het configuratiebestand van de toepassing te gebruiken.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
De query die moet worden uitgevoerd, wordt geconfigureerd in Sql
de eigenschap en de parameters worden doorgegeven via de Parameters
verzameling.
De resultaten van de SQL-query worden opgehaald met behulp van een DbDataReader
. De activiteit doorloopt en DbDataReader
wijst de rijen in de DbDataReader
rij toe aan een exemplaar van TResult
. De gebruiker moet DbQuery
de toewijzingscode opgeven en dit kan op twee manieren worden gedaan: met behulp van eenDbDataReader
Func<TResult>< ,> TResult
of een<DbDataReader
ActivityFunc<TResult> , . TResult
> In het eerste geval wordt de kaart uitgevoerd in één pulse van uitvoering. Daarom is het sneller, maar dit kan niet worden geserialiseerd naar XAML. In het laatste geval wordt de kaart uitgevoerd in meerdere pulsen. Daarom kan het langzamer zijn, maar kan worden geserialiseerd naar XAML en declaratief worden geschreven (elke bestaande activiteit kan deelnemen aan de toewijzing).
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 | Beschrijving |
---|---|
ProviderName | ADO.NET provider invariantnaam. Als dit argument is ingesteld, moet het ConnectionString ook worden ingesteld. |
ConnectionString | Verbindingsreeks om verbinding te maken met de database. Als dit argument is ingesteld, moet u ProviderName ook worden ingesteld. |
CommandType | Het type dat DbCommand moet worden uitgevoerd. |
ConfigName | Naam van de sectie configuratiebestand waarin de verbindingsgegevens worden opgeslagen. Wanneer dit argument is ingesteld ProviderName en ConnectionString niet vereist is. |
Sql | De SQL-opdracht die moet worden uitgevoerd. |
Parameters | Verzameling van de parameters van de SQL-query. |
Mapper | Toewijzingsfunctie (Func<TResult><DbDataReader ,>TResult ) die een record in de DataReader verkregen record neemt als gevolg van het uitvoeren van de query en retourneert een exemplaar van een object van het type TResult dat moet worden toegevoegd aan de Result verzameling.In dit geval wordt de toewijzing uitgevoerd in één pulse van de uitvoering, maar kan deze niet declaratief worden geschreven met behulp van de ontwerpfunctie. |
MapperFunc | Toewijzingsfunctie (ActivityFunc<TResult><DbDataReader ,>TResult ) die een record in de DataReader verkregen record neemt als gevolg van het uitvoeren van de query en retourneert een exemplaar van een object van het type TResult dat moet worden toegevoegd aan de Result verzameling.In dit geval wordt de toewijzing uitgevoerd in meerdere pulsen van de uitvoering. Deze functie kan worden geserialiseerd naar XAML en declaratief worden geschreven (elke bestaande activiteit kan deelnemen aan de toewijzing). |
Resultaat | Lijst met objecten die zijn verkregen als gevolg van het uitvoeren van de query en het uitvoeren van de toewijzingsfunctie voor elke record in de DataReader . |
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
DbQueryDataSet
Hiermee wordt een query uitgevoerd die een DataSet. Deze klasse voert het werk asynchroon uit. Het is afgeleid van en maakt gebruik van AsyncCodeActivity<TResult
> de asynchrone mogelijkheden.
De verbindingsgegevens kunnen worden geconfigureerd door een provider invariantnaam (ProviderName
) en de verbindingsreeks (ConnectionString
) in te stellen of alleen een verbindingsreeks configuratienaam (ConfigFileSectionName
) uit het configuratiebestand van de toepassing te gebruiken.
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
De query die moet worden uitgevoerd, wordt geconfigureerd in Sql
de eigenschap en de parameters worden doorgegeven via de Parameters
verzameling.
Nadat de opdracht DbQueryDataSet
is uitgevoerd, wordt het DataSet
geretourneerd in het argument (van het Result out
type TResult
, dat is gedefinieerd in de basisklasse 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; }
}
Argument | Beschrijving |
---|---|
ProviderName | ADO.NET provider invariantnaam. Als dit argument is ingesteld, moet het ConnectionString ook worden ingesteld. |
ConnectionString | Verbindingsreeks om verbinding te maken met de database. Als dit argument is ingesteld, moet u ProviderName ook worden ingesteld. |
ConfigName | Naam van de sectie configuratiebestand waarin de verbindingsgegevens worden opgeslagen. Wanneer dit argument is ingesteld ProviderName en ConnectionString niet vereist is. |
CommandType | Het type dat DbCommand moet worden uitgevoerd. |
Sql | De SQL-opdracht die moet worden uitgevoerd. |
Parameters | Verzameling van de parameters van de SQL-query. |
Resultaat | DataSet die wordt verkregen nadat de query is uitgevoerd. |
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
Verbindingsgegevens configureren
Alle DbActivities delen dezelfde configuratieparameters. Ze kunnen op twee manieren worden geconfigureerd:
ConnectionString + InvariantName
: Stel de invariante naam en verbindingsreeks van de ADO.NET provider in.Activity dbSelectCount = new DbQueryScalar<DateTime>() { ProviderName = "System.Data.SqlClient", ConnectionString = @"Data Source=.\SQLExpress; Initial Catalog=DbActivitiesSample; Integrated Security=True", Sql = "SELECT GetDate()" };
ConfigName
: Stel de naam in van de configuratiesectie die de verbindingsgegevens bevat.<connectionStrings> <add name="DbActivitiesSample" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLExpress;Initial Catalog=DbActivitiesSample;Integrated Security=true"/> </connectionStrings>
In de activiteit:
Activity dbSelectCount = new DbQueryScalar<int>() { ConfigName = "DbActivitiesSample", Sql = "SELECT COUNT(*) FROM Roles" };
Belangrijk
Microsoft raadt u aan de veiligste verificatiestroom te gebruiken die beschikbaar is. Als u verbinding maakt met Azure SQL, is Managed Identities voor Azure-resources de aanbevolen verificatiemethode.
Dit voorbeeld uitvoeren
Instructies voor instellingen
In dit voorbeeld wordt een database gebruikt. Er wordt een set-up- en laadscript (Setup.cmd) meegeleverd met het voorbeeld. U moet dat bestand uitvoeren met behulp van de opdrachtprompt.
Het Setup.cmd script roept het CreateDb.sql scriptbestand aan, dat SQL-opdrachten bevat die het volgende doen:
- Hiermee maakt u een database met de naam DbActivitiesSample.
- Hiermee maakt u de tabel Rollen.
- Hiermee maakt u de tabel Werknemers.
- Hiermee voegt u drie records in de tabel Rollen in.
- Hiermee worden twaalf records ingevoegd in de tabel Werknemers.
Setup.cmd uitvoeren
Open een opdrachtprompt.
Ga naar de voorbeeldmap DbActivities.
Typ 'setup.cmd' en druk op Enter.
Notitie
Setup.cmd probeert het voorbeeld te installeren in het SqlExpress-exemplaar van uw lokale computer. Als u deze wilt installeren in een ander SQL Server-exemplaar, bewerkt u Setup.cmd met de naam van het nieuwe exemplaar.
Het voorbeeld uitvoeren
- Open de oplossing in Visual Studio.
- Druk op Ctrl+Shift+B om de oplossing te compileren.
- Druk op Ctrl+F5 om het voorbeeld uit te voeren zonder foutopsporing.
Als u de voorbeelddatabase wilt verwijderen, voert u Cleanup.cmd uit vanuit de voorbeeldmap in een opdrachtprompt.
Belangrijk
De voorbeelden zijn mogelijk al geïnstalleerd op uw computer. Controleer voordat u doorgaat naar de volgende (standaard) map.
<InstallDrive>:\WF_WCF_Samples
Als deze map niet bestaat, gaat u naar Windows Communication Foundation (WCF) en WF-voorbeelden (Windows Workflow Foundation) voor .NET Framework 4 om alle WCF-voorbeelden (Windows Communication Foundation) en WF-voorbeelden te downloaden. Dit voorbeeld bevindt zich in de volgende map.
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\DbActivities