Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az Entity Framework (EF) Core a népszerű Entity Framework adatelérési technológia egyszerűsített, bővíthető, nyílt forráskódú és platformfüggetlen verziója.
Az EF Core objektum-relációs leképezőként (O/RM) szolgálhat, amely:
- Lehetővé teszi, hogy a .NET-fejlesztők .NET-objektumokkal dolgozzanak egy adatbázissal.
- Kiküszöböli az általában írandó adatelérési kódok többségének szükségességét.
Az EF Core számos adatbázismotort támogat, a részletekért lásd: Adatbázis-szolgáltatók .
A modell
Az EF Core használatával az adathozzáférés egy modell használatával történik. A modell entitásosztályokból és környezeti objektumból áll, amelyek az adatbázissal való munkamenetet jelölik. A környezeti objektum lehetővé teszi az adatok lekérdezését és mentését. További információ: Modell létrehozása.
Az EF a következő modellfejlesztési megközelítéseket támogatja:
- Modell létrehozása meglévő adatbázisból.
- Az adatbázisnak megfelelő modell kézi kódolása.
- A modell létrehozása után az EF Migrations használatával hozzon létre egy adatbázist a modellből. A migrálások lehetővé teszik az adatbázis módosítását a modell változásakor.
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace Intro;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0");
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public int Rating { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
Querying
Az entitásosztályok példányai a Language Integrated Query (LINQ) használatával lesznek lekérve az adatbázisból. További információ: Adatok lekérdezése.
using (var db = new BloggingContext())
{
var blogs = await db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToListAsync();
}
Adatok mentése
Az adatok létrehozása, törlése és módosítása az adatbázisban az entitásosztályok példányainak használatával történik. További információért lásd az Adatok mentése című témakört.
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
await db.SaveChangesAsync();
}
Az EF O/RM szempontjai
Bár az EF Core hatékonyan képes absztrahálni számos programozási részletet, vannak olyan ajánlott eljárások, amelyek minden O/RM esetében segítik az éles alkalmazások gyakori csapdáinak elkerülését.
- A mögöttes adatbázis-kiszolgáló középszintű vagy magasabb szintű ismerete elengedhetetlen az adatok nagy teljesítményű éles alkalmazásokban való létrehozásához, hibakereséséhez, profilkészítéséhez és migrálásához. Például az elsődleges és idegen kulcsok, megkötések, indexek, normalizálás, DML és DDL utasítások, adattípusok, profilkészítés stb. ismerete.
- Funkcionális és integrációs tesztelés: Fontos, hogy az éles környezetet a lehető legszorosabban replikálja annak érdekében, hogy:
- Az alkalmazásban olyan problémákat talál, amelyek csak az adatbázis-kiszolgáló egy adott verziójának vagy kiadásának használatakor jelennek meg.
- Az EF Core és más függőségek frissítésekor észlelje a kompatibilitástörő változásokat. Például olyan keretrendszereket adhat hozzá vagy frissíthet, mint a ASP.NET Core, OData vagy AutoMapper. Ezek a függőségek váratlan módon befolyásolhatják az EF Core-t.
- Teljesítmény- és stressztesztelés reprezentatív terhelésekkel. Egyes funkciók naiv használata nem skálázható megfelelően. Több gyűjtemény például magában foglalja a lusta betöltést, a nem indexelt oszlopok feltételes lekérdezéseit, az áruház által generált értékekkel rendelkező tömeges frissítéseket és beszúrásokat, az egyidejűség kezelésének hiányát, a nagy modelleket, a nem megfelelő gyorsítótár-szabályzatot.
- Biztonsági felülvizsgálat: Például a kapcsolati sztringek és egyéb titkos kódok kezelése, az adatbázis nem üzembe helyezési művelethez szükséges engedélyei, a nyers SQL bemeneti ellenőrzése, a bizalmas adatok titkosítása. Lásd a biztonságos hitelesítési folyamatokat a biztonságos konfiguráció és hitelesítési folyamat érdekében.
- Győződjön meg arról, hogy a naplózás és a diagnosztika elegendő és használható. Ilyen például a megfelelő naplózási konfiguráció, a lekérdezéscímkék és az Application Insights.
- Hiba helyreállítása. Felkészülhet a gyakori hibákra, például a verzió-visszaállításra, a tartalék kiszolgálókra, a vertikális felskálázásra és a terheléselosztásra, a DoS-kockázatcsökkentésre és az adatmentésekre.
- Alkalmazás üzembe helyezése és migrálása. Tervezze meg, hogyan lesznek alkalmazva a migrálások az üzembe helyezés során; Az alkalmazás indításakor egyidejűségi problémákat tapasztalhat, és a normál működéshez szükségesnél magasabb engedélyeket igényel. Átmeneti használatával megkönnyítheti a migrálás során előforduló végzetes hibák utáni helyreállítást. További információ: Migrálás alkalmazása.
- A létrehozott migrálások részletes vizsgálata és tesztelése. Az éles adatokra való alkalmazás előtt alaposan tesztelni kell a migrálásokat. A séma szerkezete és az oszloptípusok nem könnyen módosíthatók, ha a táblák élő adatokat tartalmaznak. Az SQL Serveren például a
nvarchar(max)és adecimal(18, 2)ritkán a legjobb típusok a sztring- és decimális tulajdonságokra leképezett oszlopokhoz, azonban ezek az alapértelmezett értékek, amelyeket az EF használ, mivel nem ismeri a konkrét forgatókönyvet.
Következő lépések
A bevezető oktatóanyagokért tekintse meg az Entity Framework Core használatának első lépéseit.