Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
Рассмотрим создание простейшего CRUD-интерфейса и взаимодействие с БД из Razor Pages. Пусть у нас есть проект для ASP.NET Core по типу Web Application.
Добавим в проект в папку Models класс Person, который будет представлять хранимые в бд данные:
public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
Для взаимодействия с MS SQL Server через Entity Framework добавим в проект через Nuget пакет Microsoft.EntityFrameworkCore.SqlServer. И также добавим в папку Models класс контекста данных ApplicationContext:
using Microsoft.EntityFrameworkCore; namespace RazorPagesApp.Models { public class ApplicationContext : DbContext { public DbSet<Person> People { get; set; } public ApplicationContext(DbContextOptions<ApplicationContext> options) : base(options) { Database.EnsureCreated(); } } }
Чтобы подключаться к базе данных, нам надо задать параметры подключения. Для этого изменим файл appsettings.json, добавив в него определение строки подключения:
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=razorpagesdb;Trusted_Connection=True" } }
И изменим файл Startup.cs, чтобы указать строку подключения для сервиса ApplicationContext:
using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using RazorPagesApp.Models; using Microsoft.EntityFrameworkCore; namespace RazorPagesApp { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { string connection = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<ApplicationContext>(options => options.UseSqlServer(connection)); services.AddRazorPages(); } public void Configure(IApplicationBuilder app) { app.UseDeveloperExceptionPage(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); }); } } }