Entity Framework Core i SQL Server
Aby uzyskać dostęp do danych w aplikacji ASP.NET Core, można wykorzystać Entity Framework Core i bazę danych SQL Server. Entity Framework Core to narzędzie ORM (Object-Relational Mapping), które umożliwia łatwe mapowanie obiektów C# na rekordy w bazie danych. W połączeniu z bazą danych SQL Server można uzyskać łatwy i wydajny dostęp do danych z poziomu aplikacji.
Kroki do rozpoczęcia korzystania z Entity Framework Core:
1. Zainstaluj bibliotekę Entity Framework Core za pomocą menedżera pakietów NuGet:
Install-Package Microsoft.EntityFrameworkCore
2. Zainstaluj bibliotekę dla bazy danych SQL Server za pomocą menedżera pakietów NuGet:
Install-Package Microsoft.EntityFrameworkCore.SqlServer
3. Utwórz klasę dziedziczącą po klasie DbContext, która będzie reprezentować kontekst bazy danych. Kontekst bazy danych zawiera definicje tabel i relacji między nimi.
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
{
/..
}
public DbSet<Product> Products { get; set; }
}
4. Skonfiguruj połączenie z bazą danych w pliku appsettings.json:
"ConnectionStrings": {
"MyDbContext": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}
5. Zarejestruj kontekst bazy danych w serwisach aplikacji w pliku Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDbContext")));
}
6. Aby wykonywać zapytania do bazy danych, utwórz repozytorium, które będzie wykorzystywać kontekst bazy danych do wykonywania operacji CRUD (Create, Read, Update, Delete).
public class ProductRepository
{
private readonly MyDbContext _dbContext;
public ProductRepository(MyDbContext dbContext)
{
_dbContext = dbContext;
}
public async Task<List<Product>> GetAll()
{
return await _dbContext.Products.ToListAsync();
}
public async Task<Product> GetById(int id)
{
return await _dbContext.Products.FirstOrDefaultAsync(p => p.Id == id);
}
public async Task Add(Product product)
{
await _dbContext.Products.AddAsync(product);
await _dbContext.SaveChangesAsync();
}
public async Task Update(Product product)
{
_dbContext.Products.Update(product);
await _dbContext.SaveChangesAsync();
}
public async Task Delete(int id)
{
var product = await GetById(id);
_dbContext.Products.Remove(product);
await _dbContext.SaveChangesAsync();
}
}
Kod do podstawowych operacji CRUD w Entity Framework Core z bazą danych SQL Server:
// utworzenie nowego obiektu DbContext
using var context = new MyDbContext();
// dodanie nowego obiektu do bazy danych
var newEntity = new MyEntity { Name = "Saly", Age = 30 };
context.MyEntities.Add(newEntity);
context.SaveChanges();
// pobranie danych z bazy danych
var entities = context.MyEntities.Where(e => e.Age > 25).ToList();
// edycja istniejącego obiektu
var entityToUpdate = context.MyEntities.FirstOrDefault(e => e.Name == "Saly");
if (entityToUpdate != null)
{
entityToUpdate.Age = 31;
context.SaveChanges();
}
// usunięcie istniejącego obiektu
var entityToDelete = context.MyEntities.FirstOrDefault(e => e.Name == "Saly");
if (entityToDelete != null)
{
context.MyEntities.Remove(entityToDelete);
context.SaveChanges();
}
W powyższym kodzie MyDbContext jest klasą dziedziczącą z DbContext, a MyEntity to klasa reprezentująca tabelę w bazie danych. Zapytania do bazy danych są wykonywane za pomocą LINQ, a metoda SaveChanges służy do zapisywania zmian w bazie danych.