Bagikan melalui


Aktivitas akses database

Aktivitas akses database memungkinkan Anda mengakses database dalam alur kerja. Aktivitas ini memungkinkan mengakses database untuk mengambil atau memodifikasi informasi dan menggunakan ADO.NET untuk mengakses database.

Aktivitas database

Bagian berikut merinci daftar aktivitas yang disertakan dalam sampel Aktivitas Db.

DbUpdate

Menjalankan kueri SQL yang menghasilkan modifikasi dalam database (menyisipkan, memperbarui, menghapus, dan modifikasi lainnya).

Kelas ini melakukan pekerjaannya secara asinkron (berasal dari AsyncCodeActivity dan menggunakan kemampuan asinkronnya).

Informasi koneksi dapat dikonfigurasi dengan mengatur nama invarian penyedia (ProviderName) dan string koneksi (ConnectionString) atau hanya menggunakan nama konfigurasi string koneksi (ConfigFileSectionName) dari file konfigurasi aplikasi.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

Kueri yang akan dieksekusi dikonfigurasikan di properti Sql dan parameternya diteruskan melalui koleksi Parameters.

Setelah DbUpdate dijalankan, jumlah rekaman yang terpengaruh dikembalikan dalam properti 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; }
}
Argumen Deskripsi
Nama Penyedia ADO.NET nama invarian penyedia. Jika argumen ini diatur, maka ConnectionString juga harus diatur.
ConnectionString String koneksi untuk terhubung ke database. Jika argumen ini diatur, maka ProviderName juga harus diatur.
ConfigName Nama bagian file konfigurasi tempat informasi koneksi disimpan. Ketika argumen ini diatur ProviderName dan ConnectionString tidak diperlukan.
Jenis Perintah Jenis DbCommand yang akan dieksekusi.
SQL Perintah SQL yang akan dijalankan.
Parameter Kumpulan parameter kueri SQL.
Catatan Terdampak Jumlah rekaman yang dipengaruhi oleh operasi terakhir.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

DbQueryScalar

Menjalankan kueri yang mengambil satu nilai dari database.

Kelas ini melakukan pekerjaannya secara asinkron (berasal dari AsyncCodeActivity<TResult> dan menggunakan kemampuan asinkronnya).

Informasi koneksi dapat dikonfigurasi dengan mengatur nama invarian penyedia (ProviderName) dan string koneksi (ConnectionString) atau hanya menggunakan nama konfigurasi string koneksi (ConfigFileSectionName) dari file konfigurasi aplikasi.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

Kueri yang akan dieksekusi dikonfigurasikan di properti Sql dan parameternya diteruskan melalui koleksi Parameters.

Setelah DbQueryScalar dijalankan, skalar dikembalikan dalam argumen Result out (jenis TResult, yang didefinisikan di kelas dasar 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; }
}
Argumen Deskripsi
Nama Penyedia ADO.NET nama invarian penyedia. Jika argumen ini diatur, maka ConnectionString juga harus diatur.
ConnectionString String koneksi untuk terhubung ke database. Jika argumen ini diatur, maka ProviderName juga harus diatur.
Jenis Perintah Jenis DbCommand yang akan dieksekusi.
NamaKonfigurasi Nama bagian file konfigurasi tempat informasi koneksi disimpan. Ketika argumen ini diatur ProviderName dan ConnectionString tidak diperlukan.
SQL Perintah SQL yang akan dijalankan.
Parameter Kumpulan parameter kueri SQL.
Hasil Skalar yang diperoleh setelah kueri dijalankan. Argumen ini berjenis TResult.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

DbQuery

Menjalankan kueri yang mengambil daftar objek. Setelah kueri dijalankan, fungsi pemetaan dijalankan (dapat berupa Func<TResult><DbDataReader, TResult> atau ActivityFunc<TResult><DbDataReader, TResult>). Fungsi pemetaan ini mendapatkan rekaman dalam DbDataReader dan memetakannya ke objek yang akan dikembalikan.

Informasi koneksi dapat dikonfigurasi dengan mengatur nama invarian penyedia (ProviderName) dan string koneksi (ConnectionString) atau hanya menggunakan nama konfigurasi string koneksi (ConfigFileSectionName) dari file konfigurasi aplikasi.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

Kueri yang akan dieksekusi dikonfigurasikan di properti Sql dan parameternya diteruskan melalui koleksi Parameters.

Hasil kueri SQL diambil menggunakan DbDataReader. Aktivitas berulang melalui DbDataReader dan memetakan baris di DbDataReader ke instans TResult. Pengguna DbQuery harus memberikan kode pemetaan dan ini dapat dilakukan dengan dua cara: menggunakan Func<TResult><DbDataReader, TResult>, atau ActivityFunc<TResult><DbDataReader, TResult>. Dalam kasus pertama, peta dilakukan dalam satu pulsa eksekusi. Oleh karena itu, ini lebih cepat, tetapi ini tidak dapat diserialisasikan ke XAML. Dalam kasus terakhir, peta dilakukan dalam beberapa pulsa. Oleh karena itu, mungkin lebih lambat tetapi dapat diserialisasikan ke XAML dan ditulis secara deklaratif (aktivitas yang ada dapat berpartisipasi dalam pemetaan).

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; }
}
Argumen Deskripsi
Nama Penyedia ADO.NET nama invarian penyedia. Jika argumen ini diatur, maka ConnectionString juga harus diatur.
ConnectionString String koneksi untuk terhubung ke database. Jika argumen ini diatur, maka ProviderName juga harus diatur.
Jenis Perintah Jenis DbCommand yang akan dieksekusi.
ConfigName Nama bagian file konfigurasi tempat informasi koneksi disimpan. Ketika argumen ini diatur ProviderName dan ConnectionString tidak diperlukan.
SQL Perintah SQL yang akan dijalankan.
Parameter Kumpulan parameter kueri SQL.
Pemeta Fungsi pemetaan (Func<TResult><DbDataReader, TResult>) yang mengambil rekaman dalam DataReader yang diperoleh sebagai hasil dari menjalankan kueri dan mengembalikan instans objek jenis TResult untuk ditambahkan ke Result koleksi.

Dalam hal ini, pemetaan dilakukan dalam satu pulsa eksekusi, tetapi tidak dapat ditulis secara deklaratif menggunakan perancang.
MapperFunc Fungsi pemetaan (ActivityFunc<TResult><DbDataReader, TResult>) yang mengambil rekaman dalam DataReader yang diperoleh sebagai hasil dari menjalankan kueri dan mengembalikan instans objek jenis TResult untuk ditambahkan ke Result koleksi.

Dalam hal ini, pemetaan dilakukan dalam beberapa pulsa eksekusi. Fungsi ini dapat diserialisasikan ke XAML dan ditulis secara deklaratif (aktivitas apa pun yang ada dapat berpartisipasi dalam pemetaan).
Hasil Daftar objek yang diperoleh sebagai hasil dari menjalankan kueri dan menjalankan fungsi pemetaan untuk setiap rekaman di DataReader.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

DbQueryDataSet

Menjalankan kueri yang mengembalikan DataSet. Kelas ini melakukan pekerjaannya secara asinkron. Ini berasal dari AsyncCodeActivity<TResult> dan menggunakan kemampuan asinkronnya.

Informasi koneksi dapat dikonfigurasi dengan mengatur nama invarian penyedia (ProviderName) dan string koneksi (ConnectionString) atau hanya menggunakan nama konfigurasi string koneksi (ConfigFileSectionName) dari file konfigurasi aplikasi.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

Kueri yang akan dieksekusi dikonfigurasikan di properti Sql dan parameternya diteruskan melalui koleksi Parameters.

Setelah DbQueryDataSet dieksekusi, DataSet dikembalikan dalam argumen Result out (dari jenis TResult, yang didefinisikan di kelas dasar 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; }
}
Argumen Deskripsi
Nama Penyedia ADO.NET nama invarian penyedia. Jika argumen ini diatur, maka ConnectionString juga harus diatur.
ConnectionString String koneksi untuk terhubung ke database. Jika argumen ini diatur, maka ProviderName juga harus diatur.
NamaKonfigurasi Nama bagian file konfigurasi tempat informasi koneksi disimpan. Ketika argumen ini diatur ProviderName dan ConnectionString tidak diperlukan.
Jenis Perintah Jenis DbCommand yang akan dieksekusi.
SQL Perintah SQL yang akan dijalankan.
Parameter Kumpulan parameter kueri SQL.
Hasil DataSet yang diperoleh setelah kueri dijalankan.

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

Mengonfigurasi informasi koneksi

Semua DbActivities memiliki parameter konfigurasi yang sama. DbActivities dapat dikonfigurasi dengan dua cara:

  • ConnectionString + InvariantName: Mengatur nama invarian penyedia ADO.NET dan string koneksi.

    Activity dbSelectCount = new DbQueryScalar<DateTime>()
    {
        ProviderName = "System.Data.SqlClient",
        ConnectionString = @"Data Source=.\SQLExpress;
                              Initial Catalog=DbActivitiesSample;
                              Integrated Security=True",
        Sql = "SELECT GetDate()"
    };
    
  • ConfigName: Mengatur nama bagian konfigurasi yang berisi informasi koneksi.

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

    Dalam aktivitas:

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

Penting

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Jika Anda menyambungkan ke Azure SQL, Identitas Terkelola untuk sumber daya Azure adalah metode autentikasi yang direkomendasikan.

Jalankan sampel ini

Petunjuk penyiapan

Sampel ini menggunakan database. Skrip penyiapan dan pemuatan (Setup.cmd) disediakan dengan sampel. Anda harus menjalankan file tersebut menggunakan perintah.

Skrip Setup.cmd memanggil file skrip CreateDb.sql, yang berisi perintah SQL yang melakukan hal berikut:

  • Membuat database yang disebut DbActivitiesSample.
  • Membuat tabel Peran.
  • Membuat tabel Karyawan.
  • Menyisipkan tiga rekaman ke dalam tabel Peran.
  • Menyisipkan dua belas rekaman ke dalam tabel Karyawan.

Untuk menjalankan Setup.cmd

  1. Buka prompt perintah.

  2. Buka folder sampel DbActivities.

  3. Ketik "setup.cmd" dan tekan Enter.

    Catatan

    Setup.cmd mencoba menginstal sampel di instans SqlExpress komputer lokal Anda. Jika Anda ingin menginstalnya di instans server SQL lainnya, edit Setup.cmd dengan nama instans baru.

Untuk menjalankan sampel

  1. Buka solusi di Visual Studio.
  2. Untuk mengkompilasi solusi, tekan Ctrl+Shift+B.
  3. Untuk menjalankan sampel tanpa penelusuran kesalahan, tekan Ctrl+F5.

Untuk menghapus instalasi database sampel, jalankan Cleanup.cmd dari folder sampel di prompt perintah.

Penting

Sampel mungkin sudah diinstal pada komputer Anda. Periksa direktori (default) berikut sebelum melanjutkan.

<InstallDrive>:\WF_WCF_Samples

Jika direktori ini tidak ada, buka sampel Windows Communication Foundation (WCF) dan Windows Workflow Foundation (WF) untuk .NET Framework 4 untuk mengunduh semua sampel Windows Communication Foundation (WCF) dan WF. Sampel ini terletak di direktori berikut.

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