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.
Jótanács
Ez a tartalom egy részlet az eBookból, Blazor az Azure-hoz készült ASP NET Web Forms Developers számára, amely elérhető a .NET Docs-on vagy egy ingyenesen letölthető PDF-fájlként, amely offline is olvasható.
Az adathozzáférés egy ASP.NET Web Forms-alkalmazás gerincét képezi. Ha webes űrlapokat készít, mi történik az adatokkal? A Web Formsban több adathozzáférési technikát is használhatott az adatbázisok kezeléséhez:
- Adatforrások
- ADO.NET
- Entitás-keretrendszer
Az adatforrások olyan vezérlők voltak, amelyeket elhelyezhet egy weblapon, és más vezérlőkhöz hasonlóan konfigurálhatja őket. A Visual Studio számos párbeszédpanelt biztosított a vezérlők konfigurálásához és a webűrlapokhoz való kötéséhez. Az "alacsony kód" vagy "nincs kód" megközelítéssel rendelkező fejlesztők előnyben részesítették ezt a technikát a Web Forms első kiadásakor.
ADO.NET az adatbázisokkal való interakció alacsony szintű megközelítése. Az alkalmazások létrehozhatnak kapcsolatot az adatbázissal parancsokkal, adattáblákkal és adatkészletekkel az interakcióhoz. Az eredmények ezután kód nélkül kötődhetnek a képernyőn lévő mezőkhöz. Ennek a megközelítésnek az a hátránya, Connection
hogy minden ADO.NET objektumCommand
(és DataTable
) egy adatbázis-szállító által biztosított kódtárakhoz volt kötve. Ezeknek az összetevőknek a használata merevsé tette a kódot, és megnehezítette a másik adatbázisba való migrálást.
Entitás-keretrendszer
Az Entity Framework (EF) a .NET Foundation által fenntartott nyílt forráskódú objektum-relációs leképezési keretrendszer. A .NET-keretrendszerben kezdetben megjelent EF lehetővé teszi az adatbázis-kapcsolatok, a tárolási sémák és az interakciók kódjának generálására. Ezzel az absztrakcióval az alkalmazás üzleti szabályaira összpontosíthat, és lehetővé teheti, hogy az adatbázist megbízható adatbázis-rendszergazda felügyelje. A .NET-ben használhatja az EF Core nevű frissített verzióját. Az EF Core segít létrehozni és fenntartani a kód és az adatbázis közötti interakciókat a parancssori eszköz használatával dotnet ef
elérhető parancsok sorozatával. Nézzünk meg néhány mintát, hogy elkezdhessen dolgozni egy adatbázissal.
ELSŐ EF-kód
Az adatbázis-interakciók létrehozásának első lépéseit gyorsan meg lehet kezdeni a használni kívánt osztályobjektumokkal. Az EF egy eszközt biztosít az osztályok számára megfelelő adatbáziskód létrehozásához. Ezt a megközelítést "Code First" fejlesztésnek nevezzük. Fontolja meg az alábbi Product
osztályt egy minta áruházbeli alkalmazáshoz, amelyet egy relációs adatbázisban, például a Microsoft SQL Serverben szeretnénk tárolni.
public class Product
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[MaxLength(4000)]
public string Description { get; set; }
[Range(0, 99999,99)]
[DataType(DataType.Currency)]
public decimal Price { get; set; }
}
A termék rendelkezik egy elsődleges kulccsal és három további mezővel, amelyeket létrehozunk az adatbázisunkban:
- Az EF konvenció szerint elsődleges kulcsként azonosítja a
Id
tulajdonságot. -
Name
a rendszer egy szövegtárolásra konfigurált oszlopban tárolja. A[Required]
tulajdonságot dekoráló attribútum kényszertnot null
ad hozzá a tulajdonság deklarált viselkedésének érvényesítéséhez. -
Description
a rendszer egy szövegtárolásra konfigurált oszlopban tárolja, és legfeljebb 4000 karakter hosszúságú lesz az[MaxLength]
attribútum által diktált módon. Az adatbázisséma egy adattípussalMaxLength
elnevezettvarchar(4000)
oszlopmal lesz konfigurálva. - A
Price
tulajdonság pénznemként lesz tárolva. Az[Range]
attribútum megfelelő korlátozásokat hoz létre, hogy megakadályozza az adattárolást a deklarált minimális és maximális értékeken kívül.
Ezt az Product
osztályt hozzá kell adnunk egy adatbázis környezeti osztályához, amely meghatározza az adatbázissal való kapcsolati és fordítási műveleteket.
public class MyDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
Az MyDbContext
osztály biztosítja azt a tulajdonságot, amely meghatározza a Product
osztályhoz való hozzáférést és annak értelmezését. Az alkalmazás ezt az osztályt konfigurálja az adatbázissal való interakcióhoz az osztály Startup
metódusának ConfigureServices
következő bejegyzéseivel (vagy a tulajdonság helyett a megfelelő helyen builder.Services
services
):
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer("MY DATABASE CONNECTION STRING"));
Az előző kód egy SQL Server-adatbázishoz fog csatlakozni a megadott kapcsolati sztringgel. A kapcsolati sztringet elhelyezheti a appsettings.json fájlban, környezeti változókban vagy más konfigurációs tárolóhelyeken, és megfelelően lecserélheti ezt a beágyazott sztringet.
Ezután a következő parancsokkal létrehozhatja az osztálynak megfelelő adatbázistáblát:
dotnet ef migrations add 'Create Product table'
dotnet ef database update
Az első parancs az adatbázisséma módosításait egy új, EF Migration nevű Create Product table
migrálásként határozza meg. A migrálás meghatározza az új adatbázis-módosítások alkalmazását és eltávolítását.
Az alkalmazás után egy egyszerű Product
táblával rendelkezik az adatbázisban, és hozzáad néhány új osztályt a projekthez, amelyek segítenek az adatbázisséma kezelésében. Ezeket a létrehozott osztályokat alapértelmezés szerint a Migrálások nevű új mappában találja. Ha módosítja az Product
osztályt, vagy további kapcsolódó osztályokat szeretne hozzáadni az adatbázishoz, újra kell futtatnia a parancssori parancsokat az áttelepítés új nevével. Ez a parancs egy másik migrálási osztályt hoz létre az adatbázisséma frissítéséhez.
EF adatbázis elsőként
Meglévő adatbázisok esetén az EF Core osztályait a .NET parancssori eszközeivel hozhatja létre. Az osztályok szerkezetének létrehozásához használja a következő parancs egyik változatát:
dotnet ef dbcontext scaffold "CONNECTION STRING" Microsoft.EntityFrameworkCore.SqlServer -c MyDbContext -t Product -t Customer
Az előző parancs a megadott kapcsolati sztring használatával és a Microsoft.EntityFrameworkCore.SqlServer
szolgáltatóval csatlakozik az adatbázishoz. A csatlakozás után létrejön egy adatbázis-környezetosztály neve MyDbContext
. Emellett létrejönnek a támogatási osztályok azokhoz a táblákhoz, amelyeket a Product
beállításokkal megadtak a Customer
és -t
táblákhoz. Ennek a parancsnak számos konfigurációs lehetősége van az adatbázisnak megfelelő osztályhierarchia létrehozásához. A teljes hivatkozásért tekintse meg a parancs dokumentációját.
Az EF Core-ról további információt a Microsoft Docs webhelyén talál.
Webszolgáltatások használata
A ASP.NET első megjelenésekor a SOAP-szolgáltatások voltak a webkiszolgálók és -ügyfelek számára az adatcsere előnyben részesített módja. Azóta sok minden megváltozott, és a szolgáltatásokkal való előnyben részesített interakciók a közvetlen HTTP-ügyfél-interakciókra változtak. Az ASP.NET Core és Blazor használatával regisztrálhatja a konfigurációját HttpClient
a Program.cs fájlban vagy a Startup
osztály ConfigureServices
metódusában. Ezt a konfigurációt akkor használja, ha a HTTP-végponttal kell kommunikálnia. Vegye figyelembe a következő konfigurációs kódot:
// in Program.cs
builder.Services.AddHttpClient("github", client =>
{
client.BaseAddress = new Uri("http://api.github.com/");
// GitHub API versioning
client.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
// GitHub requires a user-agent
client.DefaultRequestHeaders.Add("User-Agent", "BlazorWebForms-Sample");
});
Amikor adatokat kell elérnie a GitHubról, hozzon létre egy ügyfelet, amelynek a neve github
. Az ügyfél az alapcímmel van konfigurálva, és a kérésfejlécek megfelelően vannak beállítva. Az IHttpClientFactory
összetevőt injektálja a Blazor komponensekbe a @inject
irányelvvel vagy egy [Inject]
attribútummal egy tulajdonságon. Hozzon létre egy névvel ellátott klienst, és használja a szolgáltatásokat a következő formátumban:
@inject IHttpClientFactory factory
...
@code {
protected override async Task OnInitializedAsync()
{
var client = factory.CreateClient("github");
var response = await client.GetAsync("repos/dotnet/docs/issues");
response.EnsureStatusCode();
var content = await response.Content.ReadAsStringAsync();
}
}
Ez a metódus a dotnet/docs GitHub-adattárban található problémák gyűjteményét leíró sztringet adja vissza. JSON formátumú tartalmat ad vissza, és deszerializálja a megfelelő GitHub-problémaobjektumokba. Számos módon konfigurálhatja a HttpClientFactory
-t, hogy előre konfigurált HttpClient
objektumokat szolgáltasson. Próbáljon meg több HttpClient
példányt konfigurálni különböző névvel és végpontokkal a különböző webszolgáltatásokhoz. Ez a megközelítés megkönnyíti az ezekkel a szolgáltatásokkal folytatott interakciókat az egyes oldalakon. További információ: HTTP-kérések létrehozása az IHttpClientFactory használatával.