要了解Dapper,首先,我们需要知道什么是ORM或对象关系映射器。
对象关系映射器(ORM):
对象关系映射是使用首选编程语言的面向对象范例编写查询的概念。 ORM用于使用我们首选的语言而不是SQL与SQL数据库进行交互。示例– ASP.NET的实体框架。因此,基本上,ORM基于数据库查询创建对象。
现在,还有另一种叫做Micro-ORM的东西,它是完整ORM的轻量级版本。它不具有完整ORM的所有繁重功能,可以节省大量工作,但仍可以在数据库和我们首选的编程语言之间进行映射。 Dapper是Micro ORM的一个示例,实际上,它被称为Micro ORM之王 因为它的速度和工作的便捷性。
Dapper的工作方式如下:
- 首先,它创建一个IDbConnection对象,并允许我们编写查询以对数据库执行CRUD操作。
- 然后,它通过各种方法之一将查询作为各种参数之一传递。
Dapper的参数:
- sql –要执行的命令。
- param –命令参数(默认= null)。
- commandTimeout –命令超时(默认= null)。
- commandType-命令类型(默认= null)。
Dapper的方法:
1.执行:
Execute是从IDbConnection类型对象调用的方法,该方法可以执行一次或多次命令,并返回数据库表中受影响的行数。它可以执行存储过程,SELECT / INSERT / DELETE语句等。
例子 :
C#
string sql = "INSERT INTO Companies (CompanyName)
Values (@CompanyName);";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var affectedRows = connection.Execute(sql,
new {CompanyName = "GeeksforGeeks"});
}
C#
string sql = "SELECT * FROM Companies";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var companies = connection.Execute(sql);
}
C#
string sql = "SELECT * FROM Companies WHERE CompanyId = @CompanyId";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var company = connection.QueryFirst(sql,
new {CompanyId = 1});
}
C#
string sql = "SELECT * FROM Companies WHERE CompanyId = @CompanyId";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var company = connection.QuerySingle(sql,
new {CompanyId = 1});
}
2.查询:
查询是从IDbConnection类型对象调用的方法,该方法可以执行查询并映射结果。
C#
string sql = "SELECT * FROM Companies";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var companies = connection.Execute(sql);
}
3. QueryFirst:
QueryFirst是从IDbConnection类型对象调用的方法,该方法可以执行查询并映射第一个结果。
C#
string sql = "SELECT * FROM Companies WHERE CompanyId = @CompanyId";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var company = connection.QueryFirst(sql,
new {CompanyId = 1});
}
注意: QueryFirstOrDefault方法是可以执行查询并映射第一个结果的方法,如果序列不包含任何元素,则为默认值。
4. QuerySingle:
QuerySingle是从IDbConnection类型对象调用的方法,该方法可以执行查询并映射第一个结果,如果序列中不存在一个完全相同的元素,则抛出异常。
C#
string sql = "SELECT * FROM Companies WHERE CompanyId = @CompanyId";
using (var connection = new SqlConnection(
FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var company = connection.QuerySingle(sql,
new {CompanyId = 1});
}
注意: QuerySingleOrDefault方法是一种可以执行查询并映射第一个结果的方法,如果序列不包含任何元素,则为默认值;如果序列中包含多个元素,则抛出异常。