Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Действия доступа к базе данных позволяют обращаться к базе данных из рабочего процесса. Эти действия позволяют получать или изменять сведения и использовать ADO.NET для доступа к базе данных.
Действия базы данных
В следующих разделах подробно описан список действий, включенных в пример DbActivities.
Обновление БД
Выполняет SQL-запрос, который реализует изменение в базе данных (вставку, обновление, удаление или иные изменения).
Этот класс выполняет работу асинхронно (он является производным от класса AsyncCodeActivity и использует его возможности для асинхронной работы).
Чтобы настроить сведения о соединении, можно задать неизменяемое имя поставщика (ProviderName) и строку соединения (ConnectionString) или использовать имя конфигурации строки соединения (ConfigFileSectionName) из файла конфигурации приложения.
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
Запрос для выполнения настраивается в свойстве Sql, а параметры передаются через коллекцию Parameters.
После выполнения DbUpdate количество измененных записей возвращается в свойстве AffectedRecords.
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; }
}
| Аргумент | Описание |
|---|---|
| Имя поставщика | Неизменяемое имя поставщика ADO.NET. Если этот аргумент задан, то необходимо задать и аргумент ConnectionString. |
| Строка подключения | Строка соединения для подключения к базе данных. Если этот аргумент задан, то необходимо задать и аргумент ProviderName. |
| Имя конфигурации | Имя раздела файла конфигурации, в котором хранятся сведения о соединении. Если этот аргумент задан, то аргументы ProviderName и ConnectionString не требуются. |
| Тип команды | Тип выполняемой команды DbCommand. |
| SQL | Команда SQL, которая будет выполнена. |
| Параметры | Коллекция параметров SQL-запроса. |
| Затронутые записи | Количество записей, на которые повлияла последняя операция. |
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
DbQueryScalar
Выполняет запрос, извлекающий одно значение из базы данных.
Этот класс выполняет работу асинхронно (он является производным от класса AsyncCodeActivity<TResult> и использует его возможности для асинхронной работы).
Чтобы настроить сведения о соединении, можно задать неизменяемое имя поставщика (ProviderName) и строку соединения (ConnectionString) или использовать имя конфигурации строки соединения (ConfigFileSectionName) из файла конфигурации приложения.
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
Запрос для выполнения настраивается в свойстве Sql, а параметры передаются через коллекцию Parameters.
После выполнения DbQueryScalar скаляр возвращается в аргумент Result out (тип TResult, определённый в базовом классе 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; }
}
| Аргумент | Описание |
|---|---|
| Имя поставщика | Неизменяемое имя поставщика ADO.NET. Если этот аргумент задан, то необходимо задать и аргумент ConnectionString. |
| Строка подключения | Строка соединения для подключения к базе данных. Если этот аргумент задан, то необходимо задать и аргумент ProviderName. |
| Тип команды | Тип выполняемой команды DbCommand. |
| Имя конфигурации | Имя раздела файла конфигурации, в котором хранятся сведения о соединении. Если этот аргумент задан, то аргументы ProviderName и ConnectionString не требуются. |
| SQL | Команда SQL, которая будет выполнена. |
| Параметры | Коллекция параметров SQL-запроса. |
| Результат | Скаляр, полученный после выполнения запроса. Этот аргумент имеет тип TResult. |
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
DbQuery
Выполняет запрос, который возвращает список объектов. После выполнения запроса выполняется функция сопоставления (это может быть Func<TResult><DbDataReaderTResult>илиActivityFunc<TResult><DbDataReader , или ). TResult> Эта функция сопоставления получает запись в DbDataReader и сопоставляет ее возвращаемому объекту.
Чтобы настроить сведения о соединении, можно задать неизменяемое имя поставщика (ProviderName) и строку соединения (ConnectionString) или использовать имя конфигурации строки соединения (ConfigFileSectionName) из файла конфигурации приложения.
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
Запрос для выполнения настраивается в свойстве Sql, а параметры передаются через коллекцию Parameters.
Результаты SQL-запроса извлекаются с использованием DbDataReader. Действие выполняет перебор по DbDataReader и сопоставляет строки в DbDataReader с экземпляром TResult. Пользователь DbQuery должен предоставить код сопоставления, и это можно сделать двумя способами: с помощью Func<TResult><DbDataReader, TResult> или ActivityFunc<TResult><DbDataReader, TResult>. В первом случае карта создается за один импульс выполнения. Поэтому этот способ быстрее, но сериализация в XAML невозможна. В последнем случае построение карты выполняется в несколько этапов. Поэтому может потребоваться больше времени, зато возможны сериализация в XAML и декларативное авторство (любое существующее действие может участвовать в сопоставлении).
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; }
}
| Аргумент | Описание |
|---|---|
| Имя поставщика | Неизменяемое имя поставщика ADO.NET. Если этот аргумент задан, то необходимо задать и аргумент ConnectionString. |
| Строка подключения | Строка соединения для подключения к базе данных. Если этот аргумент задан, то необходимо задать и аргумент ProviderName. |
| Тип команды | Тип выполняемой команды DbCommand. |
| Имя конфигурации | Имя раздела файла конфигурации, в котором хранятся сведения о соединении. Если этот аргумент задан, то аргументы ProviderName и ConnectionString не требуются. |
| SQL | Команда SQL, которая будет выполнена. |
| Параметры | Коллекция параметров SQL-запроса. |
| Сопоставитель | Функция сопоставления (Func<TResult><DbDataReader, TResult>) которая принимает запись в полученном в DataReader результате выполнения запроса и возвращает экземпляр объекта типаTResult, добавляемого в Result коллекцию.В этом случае сопоставление совершается в одном цикле выполнения, но декларативное создание с использованием конструктора невозможно. |
| MapperFunc | Функция сопоставления (ActivityFunc<TResult><DbDataReader, TResult>) которая принимает запись в полученном в DataReader результате выполнения запроса и возвращает экземпляр объекта типаTResult, добавляемого в Result коллекцию.В этом случае сопоставление совершается в несколько шагов выполнения. Для этой функции возможны сериализация в XAML и декларативное авторство (любое существующее действие может участвовать в сопоставлении). |
| Результат | Список объектов, полученный в результате выполнения запроса и выполнения функции сопоставления для каждой записи в DataReader. |
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
DbQueryDataSet
Выполняет запрос, который возвращает DataSet. Этот класс выполняет работу асинхронно. Он происходит от AsyncCodeActivity<TResult> и использует его асинхронные возможности.
Чтобы настроить сведения о соединении, можно задать неизменяемое имя поставщика (ProviderName) и строку соединения (ConnectionString) или использовать имя конфигурации строки соединения (ConfigFileSectionName) из файла конфигурации приложения.
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
Запрос для выполнения настраивается в свойстве Sql, а параметры передаются через коллекцию Parameters.
После выполнения DbQueryDataSetDataSet возвращается в аргумент Result out (тип TResult, определенный в базовом классе 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; }
}
| Аргумент | Описание |
|---|---|
| Имя поставщика | Неизменяемое имя поставщика ADO.NET. Если этот аргумент задан, то необходимо задать и аргумент ConnectionString. |
| Строка подключения | Строка соединения для подключения к базе данных. Если этот аргумент задан, то необходимо задать и аргумент ProviderName. |
| Имя конфигурации | Имя раздела файла конфигурации, в котором хранятся сведения о соединении. Если этот аргумент задан, то аргументы ProviderName и ConnectionString не требуются. |
| Тип команды | Тип выполняемой команды DbCommand. |
| SQL | Команда SQL, которая будет выполнена. |
| Параметры | Коллекция параметров SQL-запроса. |
| Результат | DataSet, данные, полученные после выполнения запроса. |
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
Настройка сведений о подключении
Все DbActivities используют одни и те же параметры конфигурации. Их можно настроить двумя способами.
ConnectionString + InvariantName: Укажите неизменяемое имя поставщика 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: Укажите имя раздела конфигурации, в котором содержатся сведения о соединении.<connectionStrings> <add name="DbActivitiesSample" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLExpress;Initial Catalog=DbActivitiesSample;Integrated Security=true"/> </connectionStrings>В рамках активности:
Activity dbSelectCount = new DbQueryScalar<int>() { ConfigName = "DbActivitiesSample", Sql = "SELECT COUNT(*) FROM Roles" };
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.
Запустите этот пример
Инструкции по установке
Этот образец использует базу данных. Вместе с образцом предоставляется скрипт установки и загрузки (Setup.cmd). Этот файл необходимо выполнить из командной строки.
Скрипт Setup.cmd вызывает файл скрипта CreateDb.sql, который содержит команды SQL и выполняет следующие операции.
- Создает базу данных под именем DbActivitiesSample.
- Создает таблицу Roles.
- Создает таблицу Employees.
- Вставляет 3 записи в таблицу Roles.
- Вставляет двенадцать записей в таблицу Employees.
Запуск команды Setup.cmd
Откройте командную строку.
Перейдите в папку примера DbActivities.
Введите "setup.cmd" и нажмите клавишу ВВОД.
Примечание.
Setup.cmd пытается установить пример на экземпляр SQL Server Express на локальном компьютере. Если образец необходимо установить на другом экземпляре сервера SQL, измените Setup.cmd, указав другое имя экземпляра.
Чтобы запустить образец
- Откройте решение в Visual Studio.
- Чтобы скомпилировать решение, нажмите клавиши CTRL+SHIFT+B.
- Чтобы запустить пример без отладки, нажмите клавиши CTRL+F5.
Чтобы удалить образец базы данных, запустите Cleanup.cmd из папки образца в командной строке.
Внимание
На вашем компьютере уже могут быть установлены образцы. Перед продолжением проверьте следующий каталог (по умолчанию).
<InstallDrive>:\WF_WCF_Samples
Если этот каталог не существует, перейдите по ссылке на примеры Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы скачать все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\ActivityLibrary\DbActivities