Udostępnij za pośrednictwem


Działania dostępu do bazy danych

Działania dostępu do bazy danych umożliwiają dostęp do bazy danych w ramach przepływu pracy. Te działania umożliwiają uzyskiwanie dostępu do baz danych w celu pobierania lub modyfikowania informacji i używania ADO.NET w celu uzyskania dostępu do bazy danych.

Działania bazy danych

W poniższych sekcjach opisano listę działań zawartych w przykładzie DbActivities.

DbUpdate

Wykonuje zapytanie SQL, które generuje modyfikację w bazie danych (wstawianie, aktualizowanie, usuwanie i inne modyfikacje).

Ta klasa wykonuje swoją pracę asynchronicznie (pochodzi z AsyncCodeActivity funkcji asynchronicznych i używa jej możliwości asynchronicznych).

Informacje o połączeniu można skonfigurować przez ustawienie niezmiennej nazwy dostawcy (ProviderName) i parametry połączenia (ConnectionString) lub po prostu przy użyciu nazwy konfiguracji parametry połączenia (ConfigFileSectionName) z pliku konfiguracji aplikacji.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Zapytanie do wykonania jest konfigurowane we właściwości , Sql a parametry są przekazywane przez Parameters kolekcję.

Po DbUpdate wykonaniu AffectedRecords tej właściwości zwracana jest liczba rekordów, których dotyczy problem.

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 opis
ProviderName ADO.NET niezmienną nazwę dostawcy. Jeśli ten argument jest ustawiony, ConnectionString należy również ustawić wartość .
ConnectionString Parametry połączenia do nawiązania połączenia z bazą danych. Jeśli ten argument jest ustawiony, ProviderName należy również ustawić.
ConfigName Nazwa sekcji pliku konfiguracji, w której są przechowywane informacje o połączeniu. Gdy ten argument jest ustawiony ProviderName i ConnectionString nie jest wymagany.
Typ polecenia Typ, który DbCommand ma zostać wykonany.
Sql Polecenie SQL do wykonania.
Parametry Kolekcja parametrów zapytania SQL.
AffectedRecords Liczba rekordów, których dotyczy ostatnia operacja.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

DbQueryScalar

Wykonuje zapytanie, które pobiera pojedynczą wartość z bazy danych.

Ta klasa wykonuje swoją pracę asynchronicznie (pochodzi z AsyncCodeActivity<TResult> funkcji asynchronicznych i używa jej możliwości asynchronicznych).

Informacje o połączeniu można skonfigurować przez ustawienie niezmiennej nazwy dostawcy (ProviderName) i parametry połączenia (ConnectionString) lub po prostu przy użyciu nazwy konfiguracji parametry połączenia (ConfigFileSectionName) z pliku konfiguracji aplikacji.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Zapytanie do wykonania jest konfigurowane we właściwości , Sql a parametry są przekazywane przez Parameters kolekcję.

Po DbQueryScalar wykonaniu skalar jest zwracany w argumencie Result out (typu TResult, który jest zdefiniowany w klasie AsyncCodeActivity<TResult>bazowej ).

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 opis
ProviderName ADO.NET niezmienną nazwę dostawcy. Jeśli ten argument jest ustawiony, ConnectionString należy również ustawić wartość .
ConnectionString Parametry połączenia do nawiązania połączenia z bazą danych. Jeśli ten argument jest ustawiony, ProviderName należy również ustawić.
Typ polecenia Typ, który DbCommand ma zostać wykonany.
ConfigName Nazwa sekcji pliku konfiguracji, w której są przechowywane informacje o połączeniu. Gdy ten argument jest ustawiony ProviderName i ConnectionString nie jest wymagany.
Sql Polecenie SQL do wykonania.
Parametry Kolekcja parametrów zapytania SQL.
Result Skalar, który jest uzyskiwany po wykonaniu zapytania. Ten argument jest typu TResult.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

DbQuery

Wykonuje zapytanie, które pobiera listę obiektów. Po wykonaniu zapytania jest wykonywana funkcja mapowania (może to być Func<TResult><DbDataReader,> TResultlub<DbDataReaderActivityFunc<TResult> , ). TResult> Ta funkcja mapowania pobiera rekord w obiekcie DbDataReader i mapuje go na obiekt, który ma zostać zwrócony.

Informacje o połączeniu można skonfigurować przez ustawienie niezmiennej nazwy dostawcy (ProviderName) i parametry połączenia (ConnectionString) lub po prostu przy użyciu nazwy konfiguracji parametry połączenia (ConfigFileSectionName) z pliku konfiguracji aplikacji.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Zapytanie do wykonania jest konfigurowane we właściwości , Sql a parametry są przekazywane przez Parameters kolekcję.

Wyniki zapytania SQL są pobierane przy użyciu elementu DbDataReader. Działanie iteruje wiersze DbDataReader w obiekcie i mapuje wiersze w DbDataReader obiekcie na wystąpienie TResultklasy . Użytkownik DbQuery musi podać kod mapowania i można to zrobić na dwa sposoby: przy użyciu<Func<TResult>DbDataReader elementu , TResult> lub<DbDataReaderActivityFunc<TResult> , . TResult> W pierwszym przypadku mapa jest wykonywana w jednym impulsie wykonywania. W związku z tym jest to szybsze, ale nie można go serializować do XAML. W ostatnim przypadku mapa jest wykonywana w wielu impulsach. W związku z tym może być wolniejsza, ale może być serializowana do języka XAML i autoryzowana deklaratywnie (dowolne istniejące działanie może uczestniczyć w mapowaniu).

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 opis
ProviderName ADO.NET niezmienną nazwę dostawcy. Jeśli ten argument jest ustawiony, ConnectionString należy również ustawić wartość .
ConnectionString Parametry połączenia do nawiązania połączenia z bazą danych. Jeśli ten argument jest ustawiony, ProviderName należy również ustawić.
Typ polecenia Typ, który DbCommand ma zostać wykonany.
ConfigName Nazwa sekcji pliku konfiguracji, w której są przechowywane informacje o połączeniu. Gdy ten argument jest ustawiony ProviderName i ConnectionString nie jest wymagany.
Sql Polecenie SQL do wykonania.
Parametry Kolekcja parametrów zapytania SQL.
Mapowania Funkcja mapowania (Func<TResult><DbDataReader, TResult>), która pobiera rekord w DataReader uzyskanym wyniku wykonania zapytania i zwraca wystąpienie obiektu typu TResult , które ma zostać dodane do Result kolekcji.

W takim przypadku mapowanie odbywa się w jednym impulsie wykonywania, ale nie można go autoryzować deklaratywnie przy użyciu projektanta.
MapperFunc Funkcja mapowania (ActivityFunc<TResult><DbDataReader, TResult>), która pobiera rekord w DataReader uzyskanym wyniku wykonania zapytania i zwraca wystąpienie obiektu typu TResult , które ma zostać dodane do Result kolekcji.

W takim przypadku mapowanie odbywa się w wielu impulsach wykonywania. Tę funkcję można serializować do języka XAML i autoryzować deklaratywnie (dowolne istniejące działanie może uczestniczyć w mapowaniu).
Result Lista obiektów uzyskanych w wyniku wykonania zapytania i wykonania funkcji mapowania dla każdego rekordu w obiekcie DataReader.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

DbQueryDataSet

Wykonuje zapytanie zwracające element DataSet. Ta klasa wykonuje swoją pracę asynchronicznie. Pochodzi on z AsyncCodeActivity<TResult> funkcji asynchronicznych i używa ich.

Informacje o połączeniu można skonfigurować przez ustawienie niezmiennej nazwy dostawcy (ProviderName) i parametry połączenia (ConnectionString) lub po prostu przy użyciu nazwy konfiguracji parametry połączenia (ConfigFileSectionName) z pliku konfiguracji aplikacji.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Zapytanie do wykonania jest konfigurowane we właściwości , Sql a parametry są przekazywane przez Parameters kolekcję.

Po wykonaniu DbQueryDataSet DataSet parametr jest zwracany w argumencie Result out (typu TResult, który jest zdefiniowany w klasie AsyncCodeActivity<TResult>bazowej ).

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 opis
ProviderName ADO.NET niezmienną nazwę dostawcy. Jeśli ten argument jest ustawiony, ConnectionString należy również ustawić wartość .
ConnectionString Parametry połączenia do nawiązania połączenia z bazą danych. Jeśli ten argument jest ustawiony, ProviderName należy również ustawić.
ConfigName Nazwa sekcji pliku konfiguracji, w której są przechowywane informacje o połączeniu. Gdy ten argument jest ustawiony ProviderName i ConnectionString nie jest wymagany.
Typ polecenia Typ, który DbCommand ma zostać wykonany.
Sql Polecenie SQL do wykonania.
Parametry Kolekcja parametrów zapytania SQL.
Result DataSet uzyskany po wykonaniu zapytania.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Konfigurowanie informacji o połączeniu

Wszystkie wartości DbActivities współużytkuje te same parametry konfiguracji. Można je skonfigurować na dwa sposoby:

  • ConnectionString + InvariantName: ustaw niezmienną nazwę dostawcy ADO.NET i parametry połączenia.

    Activity dbSelectCount = new DbQueryScalar<DateTime>()
    {
        ProviderName = "System.Data.SqlClient",
        ConnectionString = @"Data Source=.\SQLExpress;
                              Initial Catalog=DbActivitiesSample;
                              Integrated Security=True",
        Sql = "SELECT GetDate()"
    };
    
  • ConfigName: Ustaw nazwę sekcji konfiguracji zawierającej informacje o połączeniu.

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

    W działaniu:

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

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Uruchom ten przykład

Instrukcje konfiguracji

W tym przykładzie jest używana baza danych. Przykładowy skrypt konfigurowania i ładowania (Setup.cmd). Musisz wykonać ten plik przy użyciu wiersza polecenia.

Skrypt Setup.cmd wywołuje plik skryptu CreateDb.sql, który zawiera polecenia SQL, które wykonują następujące czynności:

  • Tworzy bazę danych o nazwie DbActivitiesSample.
  • Tworzy tabelę Role.
  • Tworzy tabelę Employees.
  • Wstawia trzy rekordy do tabeli Role.
  • Wstawia dwanaście rekordów do tabeli Employees.

Aby uruchomić Setup.cmd

  1. Otwórz wiersz polecenia.

  2. Przejdź do folderu przykładowego DbActivities.

  3. Wpisz "setup.cmd" i naciśnij Enter.

    Uwaga

    Setup.cmd próbuje zainstalować przykład na komputerze lokalnym SqlExpress. Jeśli chcesz zainstalować go w innym wystąpieniu programu SQL Server, edytuj Setup.cmd przy użyciu nowej nazwy wystąpienia.

Aby uruchomić przykład

  1. Otwórz rozwiązanie w programie Visual Studio.
  2. Aby skompilować rozwiązanie, naciśnij Ctrl+Shift+B.
  3. Aby uruchomić przykład bez debugowania, naciśnij Ctrl+F5.

Aby odinstalować przykładową bazę danych, uruchom Cleanup.cmd z folderu przykładowego w wierszu polecenia.

Ważne

Przykłady mogą być już zainstalowane na maszynie. Przed kontynuowaniem sprawdź następujący katalog (domyślny).

<InstallDrive>:\WF_WCF_Samples

Jeśli ten katalog nie istnieje, przejdź do pozycji Windows Communication Foundation (WCF) i Windows Workflow Foundation (WF) Samples for .NET Framework 4 (Przykłady dla programu .NET Framework 4 ), aby pobrać wszystkie przykłady programu Windows Communication Foundation (WCF) i programu WF. Ten przykład znajduje się w następującym katalogu.

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