📜  C#|精巧的人

📅  最后修改于: 2021-05-29 22:44:26             🧑  作者: Mango

要了解Dapper,首先,我们需要知道什么是ORM对象关系映射器。

对象关系映射器(ORM):
对象关系映射是使用首选编程语言的面向对象范例编写查询的概念。 ORM用于使用我们首选的语言而不是SQL与SQL数据库进行交互。示例– ASP.NET的实体框架。因此,基本上,ORM基于数据库查询创建对象。

现在,还有另一种叫做Micro-ORM的东西,它是完整ORM的轻量级版本。它不具有完整ORM的所有繁重功能,可以节省大量工作,但仍可以在数据库和我们首选的编程语言之间进行映射。 Dapper是Micro ORM的一个示例,实际上,它被称为Micro ORM之王 因为它的速度和工作的便捷性。

Dapper的工作方式如下:

  • 首先,它创建一个IDbConnection对象,并允许我们编写查询以对数据库执行CRUD操作。
  • 然后,它通过各种方法之一将查询作为各种参数之一传递。

Dapper的参数:

  1. sql –要执行的命令。
  2. param –命令参数(默认= null)。
  3. commandTimeout –命令超时(默认= null)。
  4. 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方法是一种可以执行查询并映射第一个结果的方法,如果序列不包含任何元素,则为默认值;如果序列中包含多个元素,则抛出异常