dapper orm
Dapper是一种开源的轻量级“微型ORM”,它支持许多数据库,包括SQL Server,MySQL,SQLite,SQL CE和Firebird。 通过在应用程序中使用Dapper,可以在确保高性能的同时简化数据访问。 在前面的文章中,我提供了Dapper的介绍,并研究了Dapper扩展库 。
在本文中,我将展示如何在ASP.Net Core中利用Dapper对异步操作的支持。
创建一个新的ASP.Net Core Web API项目
首先,让我们创建一个ASP.Net Core项目并安装必要的程序包。 假设您的系统已启动并运行Visual Studio 2017,请按照以下概述的步骤创建一个ASP.Net Core Web API项目。
- 启动Visual Studio 2017 IDE。
- 单击文件>新建>项目。
- 从显示的模板列表中选择“ ASP.Net Core Web应用程序(.Net Core)”。
- 指定项目的名称。
- 单击确定保存项目。
- 在“新的.Net Core Web应用程序…”窗口中选择“ API”。
- 从顶部的下拉列表中选择要使用的ASP.Net Core版本。
- 取消选中“启用Docker支持”,然后选择“不进行身份验证”,因为此处我们将不使用这两个功能。
- 单击确定。
创建新的ASP.Net Core项目后,在“解决方案资源管理器”窗口中右键单击该项目,创建一个名为“模型”的解决方案文件夹,然后创建一个新类。 将该类命名为“作者”-这将是我们的模型类,其中包含我们的数据。 这是我们的Author类的外观。
public class Author
{
public int Key { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
接下来,让我们构建一个简单的存储库。 这是存储库的接口。
public interface IAuthorRepository
{
Task<Author> GetByKey(int key);
}
AuthorRepository类实现IAuthorRepository接口。 这是本课程乍一看的样子。
public class AuthorRepository : IAuthorRepository
{
public async Task<Author> GetByKey(int key)
{
//TODO
}
}
使用Dapper创建异步查询
对于异步操作,Dapper提供了ExecuteAsync,QueryAsync,QueryFirstAsync,QueryFirstOrDefaultAsync,QuerySingleAsync,QuerySingleOrDefaultAsync和QueryMultipleAsync之类的方法。 我们将在此处使用QueryAsync方法。
GetByKey方法接受Author的键(主键值)并返回Author记录。 请注意下面QueryAsync方法的用法。
public async Task<Author> GetByKey(int key)
{
using (IDbConnection connection = new SqlConnection (connectionString))
{
string query = "SELECT pKey, FirstName, LastName FROM Author WHERE pKey = @key";
if(connection.State != ConnectionState.Open)
connection.Open();
var result = await connection.QueryAsync<Author>(query, new { pKey = key });
return result.FirstOrDefault();
}
}
要向管道注册该存储库,您应利用如下所示的ConfigureServices方法。 请注意,运行时将自动调用此方法。
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IAuthorRepository, AuthorRepository>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
因为连接字符串是在ASP.Net Core应用程序的appSettings.json文件中指定的,所以我们需要一种方法来确保该连接字符串可用于存储库。 为此,您可以利用作为ASP.Net Core一部分的IConfiguration对象。 以下代码段说明了如何执行此操作。
public class AuthorRepository : IAuthorRepository
{
private readonly IConfiguration _config;
private readonly string connectionString = null;
public AuthorRepository(IConfiguration config)
{
_config = config;
connectionString = _config.GetConnectionString ("IDGConnectionString");
}
//Other methods
}
最后,这是控制器类供您参考。 注意作者存储库是如何注入的。
[Route("api/[controller]")]
[ApiController]
public class AuthorController : ControllerBase
{
private readonly IAuthorRepository _authorRepository;
public AuthorController(IAuthorRepository authorRepository)
{
_authorRepository = authorRepository;
}
[HttpGet]
[Route("{id}")]
public async Task<ActionResult<Author>> GetByKey(int id)
{
return await _authorRepository.GetByKey(id);
}
}
对象关系映射器(也称为ORM)用于消除编程语言的对象模型与关系数据库中的数据模型之间存在的“阻抗不匹配”。 Dapper是Stack Overflow的Sam Saffron构建的一种简单,灵活,快速,轻巧的ORM。 Dapper是免费的开源。 您可以在此处和此处阅读我在Dapper上的前两篇文章,以了解有关Dapper ORM的更多信息。
翻译自: https://www.infoworld.com/article/3305720/how-to-use-the-dapper-orm-in-aspnet-core.html
dapper orm