Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
Nyisson meg egy parancssorablakot.
Nyissa meg a DbActivities mintamappát.
Í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
- Nyissa meg az elemet a Visual Studióban.
- A megoldás fordításához nyomja le a Ctrl+Shift+B billentyűkombinációt.
- 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