Dela via


Aktiviteter för databasåtkomst

Med databasåtkomstaktiviteter kan du komma åt en databas i ett arbetsflöde. Dessa aktiviteter gör det möjligt att komma åt databaser för att hämta eller ändra information och använda ADO.NET för att komma åt databasen.

Databasaktiviteter

I följande avsnitt beskrivs listan över aktiviteter som ingår i dbactivities-exemplet.

DbUpdate

Kör en SQL-fråga som skapar en ändring i databasen (infoga, uppdatera, ta bort och andra ändringar).

Den här klassen utför sitt arbete asynkront (den härleds från AsyncCodeActivity och använder dess asynkrona funktioner).

Anslutningsinformationen kan konfigureras genom att ange ett providerinvariantnamn (ProviderName) och anslutningssträng (ConnectionString) eller bara använda ett anslutningssträng konfigurationsnamn (ConfigFileSectionName) från programkonfigurationsfilen.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Frågan som ska köras konfigureras i dess Sql egenskap och parametrarna skickas genom Parameters samlingen.

När DbUpdate har körts returneras antalet berörda poster i AffectedRecords egenskapen.

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; }
}
Argumentation beskrivning
Leverantörnamn ADO.NET providerns invarianta namn. Om det här argumentet anges måste du ConnectionString också ange det.
Anslutningssträng Anslutningssträng för att ansluta till databasen. Om det här argumentet anges måste du ProviderName också ange det.
Konfigurationsnamn Namnet på konfigurationsfilavsnittet där anslutningsinformationen lagras. När det här argumentet anges ProviderName och ConnectionString inte krävs.
Kommandotyp Typ av som DbCommand ska köras.
SQL SQL-kommandot som ska köras.
Parametrar Samling av parametrarna för SQL-frågan.
AffectedRecords Antal poster som påverkades av den senaste åtgärden.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

DbQueryScalar

Kör en fråga som hämtar ett enda värde från databasen.

Den här klassen utför sitt arbete asynkront (den härleds från AsyncCodeActivity<TResult> och använder dess asynkrona funktioner).

Anslutningsinformationen kan konfigureras genom att ange ett providerinvariantnamn (ProviderName) och anslutningssträng (ConnectionString) eller bara använda ett anslutningssträng konfigurationsnamn (ConfigFileSectionName) från programkonfigurationsfilen.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Frågan som ska köras konfigureras i dess Sql egenskap och parametrarna skickas genom Parameters samlingen.

När DbQueryScalar har körts returneras skalären Result out i argumentet (av typen TResult, som definieras i basklassen 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; }
}
Argumentation beskrivning
Leverantörnamn ADO.NET providerns invarianta namn. Om det här argumentet anges måste du ConnectionString också ange det.
Anslutningssträng Anslutningssträng för att ansluta till databasen. Om det här argumentet anges måste du ProviderName också ange det.
Kommandotyp Typ av som DbCommand ska köras.
Konfigurationsnamn Namnet på konfigurationsfilavsnittet där anslutningsinformationen lagras. När det här argumentet anges ProviderName och ConnectionString inte krävs.
SQL SQL-kommandot som ska köras.
Parametrar Samling av parametrarna för SQL-frågan.
Resultat Skalär som hämtas efter att frågan har körts. Det här argumentet är av typen TResult.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

DbQuery

Kör en fråga som hämtar en lista över objekt. När frågan har körts körs en mappningsfunktion (det kan vara Func<TResult><DbDataReader,TResult>eller enActivityFunc<TResult><DbDataReader , ). TResult> Den här mappningsfunktionen hämtar en post i en DbDataReader och mappar den till objektet som ska returneras.

Anslutningsinformationen kan konfigureras genom att ange ett providerinvariantnamn (ProviderName) och anslutningssträng (ConnectionString) eller bara använda ett anslutningssträng konfigurationsnamn (ConfigFileSectionName) från programkonfigurationsfilen.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Frågan som ska köras konfigureras i dess Sql egenskap och parametrarna skickas genom Parameters samlingen.

Resultatet av SQL-frågan hämtas med hjälp av en DbDataReader. Aktiviteten itererar genom DbDataReader och mappar raderna i DbDataReader till en instans av TResult. Användaren av måste ange mappningskoden och detta kan göras på två sätt: med hjälp av DbQuery en Func<TResult><DbDataReader, TResult> eller en ActivityFunc<TResult><DbDataReader, TResult>. I det första fallet görs kartan i en enda körningspuls. Därför går det snabbare, men detta kan inte serialiseras till XAML. I det sista fallet utförs kartan i flera pulser. Därför kan det vara långsammare men kan serialiseras till XAML och auktoriseras deklarativt (alla befintliga aktiviteter kan delta i mappningen).

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; }
}
Argumentation beskrivning
Leverantörnamn ADO.NET providerns invarianta namn. Om det här argumentet anges måste du ConnectionString också ange det.
Anslutningssträng Anslutningssträng för att ansluta till databasen. Om det här argumentet anges måste du ProviderName också ange det.
Kommandotyp Typ av som DbCommand ska köras.
Konfigurationsnamn Namnet på konfigurationsfilavsnittet där anslutningsinformationen lagras. När det här argumentet anges ProviderName och ConnectionString inte krävs.
SQL SQL-kommandot som ska köras.
Parametrar Samling av parametrarna för SQL-frågan.
Kartläggare Mappningsfunktionen (Func<TResult><DbDataReader, TResult>) som tar en post i det erhållna DataReader resultatet av körningen av frågan och returnerar en instans av ett objekt av typen TResult som ska läggas till i Result samlingen.

I det här fallet görs mappningen i en enda körningspuls, men den kan inte redigeras deklarativt med hjälp av designern.
MapperFunc Mappningsfunktionen (ActivityFunc<TResult><DbDataReader, TResult>) som tar en post i det erhållna DataReader resultatet av körningen av frågan och returnerar en instans av ett objekt av typen TResult som ska läggas till i Result samlingen.

I det här fallet görs mappningen i flera körningspulser. Den här funktionen kan serialiseras till XAML och auktoriseras deklarativt (alla befintliga aktiviteter kan delta i mappningen).
Resultat Lista över objekt som hämtats som ett resultat av att köra frågan och köra mappningsfunktionen för varje post i DataReader.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

DbQueryDataSet

Kör en fråga som returnerar en DataSet. Den här klassen utför sitt arbete asynkront. Den härleds från AsyncCodeActivity<TResult> och använder sina asynkrona funktioner.

Anslutningsinformationen kan konfigureras genom att ange ett providerinvariantnamn (ProviderName) och anslutningssträng (ConnectionString) eller bara använda ett anslutningssträng konfigurationsnamn (ConfigFileSectionName) från programkonfigurationsfilen.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Frågan som ska köras konfigureras i dess Sql egenskap och parametrarna skickas genom Parameters samlingen.

DbQueryDataSet När har körts DataSet returneras i Result out argumentet (av typen TResult, som definieras i basklassen 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; }
}
Argumentation beskrivning
Leverantörnamn ADO.NET providerns invarianta namn. Om det här argumentet anges måste du ConnectionString också ange det.
Anslutningssträng Anslutningssträng för att ansluta till databasen. Om det här argumentet anges måste du ProviderName också ange det.
Konfigurationsnamn Namnet på konfigurationsfilavsnittet där anslutningsinformationen lagras. När det här argumentet anges ProviderName och ConnectionString inte krävs.
Kommandotyp Typ av som DbCommand ska köras.
SQL SQL-kommandot som ska köras.
Parametrar Samling av parametrarna för SQL-frågan.
Resultat DataSet som hämtas efter att frågan har körts.

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Konfigurera anslutningsinformation

Alla DbActivities har samma konfigurationsparametrar. De kan konfigureras på två sätt:

  • ConnectionString + InvariantName: Ange ADO.NET providerns invarianta namn och anslutningssträng.

    Activity dbSelectCount = new DbQueryScalar<DateTime>()
    {
        ProviderName = "System.Data.SqlClient",
        ConnectionString = @"Data Source=.\SQLExpress;
                              Initial Catalog=DbActivitiesSample;
                              Integrated Security=True",
        Sql = "SELECT GetDate()"
    };
    
  • ConfigName: Ange namnet på konfigurationsavsnittet som innehåller anslutningsinformationen.

    <connectionStrings>
        <add name="DbActivitiesSample"
              providerName="System.Data.SqlClient"
              connectionString="Data Source=.\SQLExpress;Initial Catalog=DbActivitiesSample;Integrated Security=true"/>
      </connectionStrings>
    

    I aktiviteten:

    Activity dbSelectCount = new DbQueryScalar<int>()
    {
        ConfigName = "DbActivitiesSample",
        Sql = "SELECT COUNT(*) FROM Roles"
    };
    

Viktigt!

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Om du ansluter till Azure SQL är hanterade identiteter för Azure-resurser den rekommenderade autentiseringsmetoden.

Kör det här exemplet

Installationsanvisningar

Det här exemplet använder en databas. Ett konfigurations- och inläsningsskript (Setup.cmd) tillhandahålls med exemplet. Du måste köra filen med kommandotolken.

Skriptet Setup.cmd anropar skriptfilen CreateDb.sql, som innehåller SQL-kommandon som gör följande:

  • Skapar en databas med namnet DbActivitiesSample.
  • Skapar tabellen Roller.
  • Skapar tabellen Anställda.
  • Infogar tre poster i tabellen Roller.
  • Infogar tolv poster i tabellen Anställda.

Så här kör du Setup.cmd

  1. Öppna kommandotolken.

  2. Gå till exempelmappen DbActivities.

  3. Skriv "setup.cmd" och tryck på Retur.

    Kommentar

    Setup.cmd försöker installera exemplet på den lokala datorns SqlExpress-instans. Om du vill installera den i en annan SQL Server-instans redigerar du Setup.cmd med det nya instansnamnet.

Så här kör du exemplet

  1. Öppna därefter -lösningen i Visual Studio.
  2. Kompilera lösningen genom att trycka på Ctrl+Skift+B.
  3. Om du vill köra exemplet utan felsökning trycker du på Ctrl+F5.

Om du vill avinstallera exempeldatabasen kör du Cleanup.cmd från exempelmappen i en kommandotolk.

Viktigt!

Exemplen kanske redan är installerade på datorn. Sök efter följande katalog (standard) innan du fortsätter.

<InstallDrive>:\WF_WCF_Samples

Om den här katalogen inte finns går du till WCF-exempel (Windows Communication Foundation) och Windows Workflow Foundation (WF) för .NET Framework 4 för att ladda ned alla WCF- och WF-exempel (Windows Communication Foundation). Det här exemplet finns i följande katalog.

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\DbActivities