SZ
Size: a a a
SZ
P
АБ
AS
АБ
SZ
AS
АБ
В
SZ
В
В
В
АБ
АБ
В
SZ
В
Lr
Startup.cs
и т.п. А кто знает точно, что вообще происходит в файлах Program.cs
и Startup.cs
? Зачем там весь этот код?Program.cs
:var app = WebApplication.Create(args);Помимо этого, конечно, нужны классы домена и контекста
app.Map("/", () => "Hello World");
app.MapGet("/todos", async () =>
{
using var db = new TodoDbContext();
return await db.Todos.ToListAsync();
});
app.MapPost("/todos", async (Todo todo) =>
{
using var db = new TodoDbContext();
await db.Todos.AddAsync(todo);
await db.SaveChangesAsync();
});
app.Run();
TodoDbContext
. И понадобится ещё файл Imports.cs
, где будут находиться все директивы using, используемые в приложении (их теперь, чтоб не писать в каждом файле, можно подключить глобально через global using …
, по аналогии с файлом ViewImports
).MapDelete
, MapPatch
и т.п.). Как вам?CreateHostBuilder
, UseStartup
, Configure
и ConfigureServices
, папки контроллеров и прочего шаблонного кода. Все настройки по умолчанию собраны в WebApplication.Create
, а дальше вы просто сопоставляете путь с функцией обработчиком, и вуаля! WebApplication.Create
вы можете создать построитель, и внедрить нужные зависимости:var builder = WebApplication.CreateBuilder(args);Далее можно более детально настроить хост, добавить необходимые сервисы. Затем можно выделить настройку сервисов в файл Startup, а сопоставление путей с методами в отдельный файл, а дальше разделить на контроллеры. То есть обучение технологии теперь будет проходить более естественно. Не начиная с многостраничного объяснения, что, где и зачем лежит. Теперь можно начать с элементарного рабочего кода, а дальше (при необходимости) выделять обособленные части в отдельные файлы и постепенно перейти к той структуре, которая нам всем известна.
builder.Services
.AddDbContext<TodoDbContext>(o =>
o.UseSqlite("DataSource=Todos.db"));
var app = builder.Build();
SK