Adatbázis-hozzáférési tevékenységek

Az adatbázis-hozzáférési tevékenységek lehetővé teszik egy adatbázis elérését egy munkafolyamaton belül. Ezek a tevékenységek lehetővé teszik az adatbázisokhoz való hozzáférést, hogy információkat lehessen lekérni vagy módosítani, és ADO.NET-et használhatnak az adatbázis eléréséhez.

Adatbázis-tevékenységek

A következő szakaszok a DbActivities-mintában szereplő tevékenységek listáját ismertetik.

DbUpdate

Végrehajt egy SQL-lekérdezést, amely módosítást hoz létre az adatbázisban (beszúrás, frissítés, törlés és egyéb módosítások).

Ez az osztály aszinkron módon végzi a munkáját (AsyncCodeActivity származtatja, és használja az aszinkron képességeit).

A kapcsolati adatok konfigurálhatók egy szolgáltató invariáns nevének (ProviderName) és a kapcsolati sztring (ConnectionString) beállításával, vagy csak egy kapcsolati sztring konfigurációs név (ConfigFileSectionName) használatával az alkalmazáskonfigurációs fájlból.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

A végrehajtandó lekérdezés az Sql tulajdonságában van konfigurálva, és a paraméterek a Parameters gyűjteményen keresztül lesznek átadva.

A DbUpdate végrehajtását követően az érintett rekordok száma visszaadódik a AffectedRecords tulajdonságban.

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; }
}
Argumentum Leírás
Szolgáltatónév ADO.NET szolgáltató invariáns név. Ha ez az argumentum be van állítva, akkor az ConnectionString argumentumot is be kell állítani.
Csatlakozási karakterlánc Kapcsolati sztring az adatbázishoz való csatlakozáshoz. Ha ez az argumentum be van állítva, akkor ProviderName azt is be kell állítani.
ConfigName Annak a konfigurációs fájlszakasznak a neve, amelyben a kapcsolati adatok tárolódnak. Ha ez az argumentum be van állítva ProviderName , és ConnectionString nincs szükség rá.
Parancstípus A végrehajtandó DbCommand típusa.
SQL A végrehajtandó SQL-parancs.
Paraméterek Az SQL-lekérdezés paramétereinek gyűjteménye.
Érintett rekordok Az utolsó művelet által érintett rekordok száma.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

DbQueryScalar

Végrehajt egy lekérdezést, amely egyetlen értéket kér le az adatbázisból.

Ez az osztály aszinkron módon végzi a munkáját (a AsyncCodeActivity<TResult> osztályból származik és annak aszinkron képességeit használja).

A kapcsolati adatok konfigurálhatók egy szolgáltató invariáns nevének (ProviderName) és a kapcsolati sztring (ConnectionString) beállításával, vagy csak egy kapcsolati sztring konfigurációs név (ConfigFileSectionName) használatával az alkalmazáskonfigurációs fájlból.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

A végrehajtandó lekérdezést a Sql tulajdonság határozza meg, és a paramétereket a Parameters gyűjteményen keresztül adjuk át.

A DbQueryScalar végrehajtása után a skalár a Result out argumentumban lesz visszaadva (a AsyncCodeActivity<TResult> alaposztályban definiált TResult típus).

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; }
}
Argumentum Leírás
Szolgáltatónév ADO.NET-szolgáltató invariáns neve. Ha ez az argumentum be van állítva, akkor az ConnectionString argumentumot is be kell állítani.
Csatlakozási karakterlánc Kapcsolati sztring az adatbázishoz való csatlakozáshoz. Ha ez az argumentum be van állítva, akkor ProviderName azt is be kell állítani.
Parancstípus A végrehajtandó DbCommand típusa.
ConfigName Annak a konfigurációs fájlszakasznak a neve, amelyben a kapcsolati adatok tárolódnak. Ha ez az argumentum be van állítva ProviderName , és ConnectionString nincs szükség rá.
SQL A végrehajtandó SQL-parancs.
Paraméterek Az SQL-lekérdezés paramétereinek gyűjteménye.
Eredmény A lekérdezés végrehajtása után kapott skalár. Ez az argumentum TResult típusú.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

DbQuery

Végrehajt egy lekérdezést, amely lekéri az objektumok listáját. A lekérdezés végrehajtása után a rendszer végrehajt egy leképezési függvényt (lehet Func<TResult><DbDataReaderTResult>, vagy egyActivityFunc<TResult><DbDataReader , ). TResult> Ez a leképezési függvény lekér egy rekordot egy DbDataReader kontextusban, és leképezi azt a visszaadandó objektumként.

A kapcsolati adatok konfigurálhatók egy szolgáltató invariáns nevének (ProviderName) és a kapcsolati sztring (ConnectionString) beállításával, vagy csak egy kapcsolati sztring konfigurációs név (ConfigFileSectionName) használatával az alkalmazáskonfigurációs fájlból.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

A végrehajtandó lekérdezés a Sql tulajdonságban van konfigurálva, és a paraméterek a Parameters gyűjteményen keresztül kerülnek átadásra.

Az SQL-lekérdezés eredményeinek lekérése egy DbDataReader. A tevékenység végigismétli a DbDataReader-t és leképezi a DbDataReader sorait egy TResult példányra. A DbQuery felhasználójának meg kell adnia a leképezési kódot, és ezt kétféleképpen lehet megtenni: vagy egy Func<TResult><DbDataReader, TResult>, vagy egy ActivityFunc<TResult><DbDataReader, TResult>. Az első esetben a leképezés a végrehajtás egyetlen lépésében történik. Ezért gyorsabb, de ez nem szerializálható XAML-be. Az utolsó esetben a térképezés több impulzusban valósul meg. Ezért lehet, hogy lassabb, de szerializálható az XAML-be, és deklaratív módon hitelesíthető (bármely meglévő tevékenység részt vehet a leképezésben).

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; }
}
Argumentum Leírás
Szolgáltatónév ADO.NET szolgáltató invariáns név. Ha ez az argumentum be van állítva, akkor az ConnectionString argumentumot is be kell állítani.
Csatlakozási karakterlánc Kapcsolati sztring az adatbázishoz való csatlakozáshoz. Ha ez az argumentum be van állítva, akkor ProviderName azt is be kell állítani.
Parancstípus A végrehajtandó DbCommand típusa.
ConfigName Annak a konfigurációs fájlszakasznak a neve, amelyben a kapcsolati adatok tárolódnak. Ha ez az argumentum be van állítva ProviderName , és ConnectionString nincs szükség rá.
SQL A végrehajtandó SQL-parancs.
Paraméterek Az SQL-lekérdezés paramétereinek gyűjteménye.
Térképező Olyan leképezési függvény (Func<TResult><DbDataReader, ) amely a TResult lekérdezés végrehajtása eredményeként kapott rekordot veszi fel, >DataReaderés visszaad egy olyan objektumpéldányt, amelyet TResult hozzá kell adni a Result gyűjteményhez.

Ebben az esetben a leképezés egyetlen végrehajtásimpulzusban történik, de a tervezővel nem hitelesíthető deklaratív módon.
MapperFunc Leképezési függvény (ActivityFunc<TResult><DbDataReader, TResult>), amely a DataReader lekérdezés végrehajtása eredményeként kapott rekordot veszi fel, és visszaad egy TResult típusú objektumpéldányt, amelyet hozzá kell adni a Result gyűjteményhez.

Ebben az esetben a leképezés több végrehajtási impulzusban történik. Ez a függvény szerializálható az XAML-ben, és deklaratív módon hitelesíthető (bármely meglévő tevékenység részt vehet a leképezésben).
Eredmény Azon objektumok listája, amelyeket a lekérdezés végrehajtása és a leképezési függvény végrehajtása során kapott a DataReader.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

DbQueryDataSet

Egy lekérdezést hajt végre, amely egy DataSet-t ad vissza. Ez az osztály aszinkron módon végzi el a munkáját. Az AsyncCodeActivity<TResult> származik és használja annak aszinkron képességeit.

A kapcsolati adatok konfigurálhatók egy szolgáltató invariáns nevének (ProviderName) és a kapcsolati sztring (ConnectionString) beállításával, vagy csak egy kapcsolati sztring konfigurációs név (ConfigFileSectionName) használatával az alkalmazáskonfigurációs fájlból.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

A végrehajtandó lekérdezést a Sql tulajdonság határozza meg, és a paramétereket a Parameters gyűjteményen keresztül adjuk át.

A DbQueryDataSet végrehajtása után a DataSet a Result out argumentumban kerül visszaadásra (TResult típusban, amely az alaposztályban AsyncCodeActivity<TResult> van definiálva).

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; }
}
Argumentum Leírás
Szolgáltatónév ADO.NET-szolgáltató invariáns neve. Ha ez az argumentum be van állítva, akkor az ConnectionString argumentumot is be kell állítani.
Csatlakozási karakterlánc Kapcsolati sztring az adatbázishoz való csatlakozáshoz. Ha ez az argumentum be van állítva, akkor ProviderName azt is be kell állítani.
ConfigName Annak a konfigurációs fájlszakasznak a neve, amelyben a kapcsolati adatok tárolódnak. Ha ez az argumentum be van állítva ProviderName , és ConnectionString nincs szükség rá.
Parancstípus A végrehajtandó DbCommand típusa.
SQL A végrehajtandó SQL-parancs.
Paraméterek Az SQL-lekérdezés paramétereinek gyűjteménye.
Eredmény DataSet a lekérdezés végrehajtása után nyerhető ki.

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

Kapcsolati adatok konfigurálása

Minden DbActivities ugyanazokat a konfigurációs paramétereket használja. Ezek kétféleképpen konfigurálhatók:

  • ConnectionString + InvariantName: Állítsa be az ADO.NET szolgáltató invariáns nevét és kapcsolati karakterláncot.

    Activity dbSelectCount = new DbQueryScalar<DateTime>()
    {
        ProviderName = "System.Data.SqlClient",
        ConnectionString = @"Data Source=.\SQLExpress;
                              Initial Catalog=DbActivitiesSample;
                              Integrated Security=True",
        Sql = "SELECT GetDate()"
    };
    
  • ConfigName: Adja meg a kapcsolati adatokat tartalmazó konfigurációs szakasz nevét.

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

    A tevékenységben:

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

Fontos

A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha az Azure SQL-hez csatlakozik, az Azure-erőforrásokhoz használt felügyelt identitások az ajánlott hitelesítési módszer.

A minta futtatása

Beállítási utasítások

Ez a minta egy adatbázist használ. A minta egy beállítási és betöltési szkriptet (Setup.cmd) biztosít. A fájlt a parancssor használatával kell végrehajtania.

A Setup.cmd szkript meghívja a CreateDb.sql szkriptfájlt, amely az alábbi SQL-parancsokat tartalmazza:

  • Létrehoz egy DbActivitiesSample nevű adatbázist.
  • Létrehozza a Szerepkörök táblát.
  • Létrehozza az Alkalmazottak táblát.
  • Három rekordot szúr be a Szerepkörök táblába.
  • Tizenkét rekordot szúr be az Alkalmazottak táblába.

Setup.cmd futtatása

  1. Nyisson meg egy parancssorablakot.

  2. Nyissa meg a DbActivities mintamappát.

  3. Írja be a "setup.cmd" kifejezést, és nyomja le az Enter billentyűt.

    Megjegyzés

    Setup.cmd megpróbálja telepíteni a mintát a helyi gép SqlExpress-példányában. Ha más SQL Server-példányban szeretné telepíteni, szerkessze Setup.cmd az új példány nevével.

A minta futtatása

  1. Nyissa meg az elemet a Visual Studióban.
  2. A megoldás fordításához nyomja le a Ctrl+Shift+B billentyűkombinációt.
  3. Ha hibakeresés nélkül szeretné futtatni a mintát, nyomja le a Ctrl+F5 billentyűkombinációt.

A mintaadatbázis eltávolításához futtassa a Cleanup.cmd fájlt a mintamappából a parancssorban.

Fontos

Előfordulhat, hogy a minták már telepítve vannak a gépen. A folytatás előtt ellenőrizze az alábbi (alapértelmezett) könyvtárat.

<InstallDrive>:\WF_WCF_Samples

Ha ez a könyvtár nem létezik, látogasson el a Windows Communication Foundation (WCF) és Windows Workflow Foundation (WF) minták a .NET keretrendszer 4-hez oldalra az összes Windows Communication Foundation (WCF) és WF minta letöltéséhez. Ez a minta a következő könyvtárban található.

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