C# ASP.NET Core 使用 EF Core 内存数据库构建 Todo API 示例
这段代码使用 Microsoft.EntityFrameworkCore 库,并创建了一个 WebApplication。代码的主要功能是创建一个基于内存的数据库,并定义了一些路由处理不同的 HTTP 请求。
首先,通过调用 WebApplication.CreateBuilder(args) 创建了一个 builder 对象,用于构建应用程序。然后,通过调用 builder.Services.AddDbContext<TodoDb>(opt => opt.UseInMemoryDatabase('TodoList')) 将一个基于内存的数据库添加到应用程序的服务中,数据库的名称为 'TodoList'。接着,通过调用 builder.Services.AddDatabaseDeveloperPageExceptionFilter() 添加了一个开发者页面的异常过滤器,用于在开发过程中显示数据库异常信息。最后,调用 builder.Build() 方法构建应用程序。
接下来,通过调用 app.MapGet('/todoitems', async (TodoDb db) => await db.Todos.ToListAsync()) 定义了一个路由,用于处理 GET 请求,该路由的路径为 '/todoitems'。当收到该请求时,会从数据库中获取所有的 'Todo' 对象,并以列表的形式返回。
类似地,通过调用 app.MapGet('/todoitems/complete', async (TodoDb db) => await db.Todos.Where(t => t.IsComplete).ToListAsync()) 定义了另一个路由,用于处理 GET 请求,该路由的路径为 '/todoitems/complete'。当收到该请求时,会从数据库中获取所有 'IsComplete' 属性为 true 的 'Todo' 对象,并以列表的形式返回。
接着,通过调用 app.MapGet('/todoitems/{id}', async (int id, TodoDb db) => await db.Todos.FindAsync(id) is Todo todo ? Results.Ok(todo) : Results.NotFound()) 定义了一个带参数的路由,用于处理 GET 请求,该路由的路径为 '/todoitems/{id}'。当收到该请求时,会根据传入的 id 参数在数据库中查找对应的 'Todo' 对象,并返回该对象。如果找到了对象,则返回结果为 200 OK,并携带该对象作为响应体;如果未找到对象,则返回结果为 404 Not Found。
然后,通过调用 app.MapPost('/todoitems', async (Todo todo, TodoDb db) => { ... }) 定义了一个路由,用于处理 POST 请求,该路由的路径为 '/todoitems'。当收到该请求时,会将传入的 'Todo' 对象添加到数据库中,并返回结果为 201 Created,并携带添加的对象作为响应体。
接下来,通过调用 app.MapPut('/todoitems/{id}', async (int id, Todo inputTodo, TodoDb db) => { ... }) 定义了一个带参数的路由,用于处理 PUT 请求,该路由的路径为 '/todoitems/{id}'。当收到该请求时,会根据传入的 id 参数在数据库中查找对应的 'Todo' 对象,并将传入的 'inputTodo' 对象的属性值更新到数据库中的对应对象中。
最后,通过调用 app.MapDelete('/todoitems/{id}', async (int id, TodoDb db) => { ... }) 定义了一个带参数的路由,用于处理 DELETE 请求,该路由的路径为 '/todoitems/{id}'。当收到该请求时,会根据传入的 id 参数在数据库中查找对应的 'Todo' 对象,并将该对象从数据库中删除。
最后,通过调用 app.Run() 方法运行应用程序。
原文地址: https://www.cveoy.top/t/topic/paPw 著作权归作者所有。请勿转载和采集!