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
,> TResult
lub<DbDataReader
ActivityFunc<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 TResult
klasy . Użytkownik DbQuery
musi podać kod mapowania i można to zrobić na dwa sposoby: przy użyciu<Func<TResult>DbDataReader
elementu , TResult
> lub<DbDataReader
ActivityFunc<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
Otwórz wiersz polecenia.
Przejdź do folderu przykładowego DbActivities.
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
- Otwórz rozwiązanie w programie Visual Studio.
- Aby skompilować rozwiązanie, naciśnij Ctrl+Shift+B.
- 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