有没有做羞羞的网站,4399的经典小游戏,大连网站制作流程,推广软文是什么注#xff1a;如果你使用Dapper一段时间了#xff0c;这篇你可以跳过去了。在第十二篇中#xff0c;我们聊过官方的ORM——EntityFramework#xff0c;它可以把SQL细节都隐藏#xff0c;这对于一些标准化的关系数据库项目非常便捷。今天#xff0c;介绍另外一个流行的ORM… 注如果你使用Dapper一段时间了这篇你可以跳过去了。在第十二篇中我们聊过官方的ORM——EntityFramework它可以把SQL细节都隐藏这对于一些标准化的关系数据库项目非常便捷。今天介绍另外一个流行的ORM——DapperDapper是通过扩展IDbConnection方法来达到对数据的处理的特点是灵活高效。还是通过项目看看Dapper的使用。首先安装两个NuGet包我们还是使用之前的Exam项目的表来说明Dapper使用库是SQL Server。安装Dapper和SqlClientInstall-Package DapperInstall-Package Microsoft.Data.SqlClient下面是对Question进行增删改查using Dapper;
using Microsoft.Data.SqlClient;var builder WebApplication.CreateBuilder(args);
builder.Services.AddScopedIQuestionService, QuestionService();
var app builder.Build();app.MapPost(/question, async (IQuestionService questionService, QuestionModel question)
{return await questionService.AddQuestionAsync(question);
});app.MapPut(/question, async (IQuestionService questionService, QuestionModel question)
{return await questionService.ModifyQuestionAsync(question);
});app.MapGet(/question/{id}, async (IQuestionService questionService, int id)
{return await questionService.GetQuestionAsync(id);});app.MapDelete(/question/{id}, async (IQuestionService questionService, int id)
{return await questionService.DeleteQuestionAsync(id);
});app.Run();public interface IQuestionService
{TaskQuestionModel GetQuestionAsync(int id);Taskbool AddQuestionAsync(QuestionModel question);Taskbool DeleteQuestionAsync(int id);Taskbool ModifyQuestionAsync(QuestionModel question);
}
public class QuestionService : IQuestionService
{private readonly SqlConnection _connection;public QuestionService(IConfiguration configuration){var connectionString configuration.GetConnectionString(ExamDatabase);_connection new SqlConnection(connectionString);}public async Taskbool AddQuestionAsync(QuestionModel question){var sql INSERT INTO [Questions]([Question],[Score],[QuestionTypeID],[SujectTypeID])VALUES(Question,Score,QuestionTypeID,SujectTypeID);return (await _connection.ExecuteAsync(sql, question)) 0;}public async Taskbool DeleteQuestionAsync(int id){var sql delete from questions where idid;return (await _connection.ExecuteAsync(sql, new { id })) 0;}public async TaskQuestionModel GetQuestionAsync(int id){var sql select * from questions where idid;return await _connection.QuerySingleAsyncQuestionModel(sql, new { id });}public async Taskbool ModifyQuestionAsync(QuestionModel question){var sql UPDATE [dbo].[Questions]SET [Question] Question,[Score] Score,[QuestionTypeID] QuestionTypeID,[SujectTypeID] SujectTypeIDWHERE IDID;return (await _connection.ExecuteAsync(sql, question)) 0;}
}通过上面事例可以看到Dapper通过扩展IDbConnection的扩展方法来提供功能基本上查询用QueryT(sql,Param,...)增删改用Execute(sql,T,...)Dapper的方便之处是T全部是自运映射到sql中的参数的这样就能做到sql我们可以灵活且更高效语法编写参数可以方便的进出sql达到一个平衡点。如下图示关于更丰富多彩的Dapper使用详见Github仓库说明文档https://github.com/DapperLib/Dapper