Dapper ORM Una libreria NuGet che estenderà l'interfaccia IDbConnection
con fantastiche estensioni!

string sql = "SELECT * FROM Invoices";

using (var conn = My.ConnectionFactory())
{
    var invoices = conn.Query<Invoice>(sql);
}



Dapper è un ORM?

Sì e no! Le persone stanno ancora discutendo su questo. Dapper si è guadagnato il titolo di re del C # Micro ORM ma è considerato da più persone come un semplice object mapper per .NET.



Dapper è migliore di Entity Framework?

Sì e no! Le persone preferiranno Dapper quando vogliono scrivere la query SQL con prestazioni ottimali.



Le iniezioni SQL di Dapper sono sicure?

Sì, è sicuro al 100% se usi le query parametrizzate come dovresti fare sempre!



Do Dapper supporta Bulk Insert?

No, ma una libreria di terze parti funziona: Dapper Plus . È una libreria primaria che estende Dapper con tutte le operazioni di massa.

Learn More


Do Dapper supporta il mio provider di database?

Probabilmente sì dato che Dapper fornisce estensioni all'interfaccia IDbConnection. È tuo compito scrivere SQL compatibile con il tuo provider di database.



Do Dapper supporta la transazione?

Sì, la transazione di supporto Dapper e ogni metodo che può utilizzare uno hanno un parametro facoltativo per specificarlo.


Dapper - Execute

Execute a command one or multiple times and return the number of affected rows.

  • Stored Procedure
  • INSERT statement
  • UPDATE statement
  • DELETE statement
Dapper - Execute Example
string sql = "INSERT INTO Customers (CustomerName) Values (@CustomerName);";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
      var affectedRows = connection.Execute(sql, new {CustomerName = "Mark"});

      Console.WriteLine(affectedRows);
   
      var customer = connection.Query<Customer>("Select * FROM CUSTOMERS WHERE CustomerName = 'Mark'").ToList();
   
      FiddleHelper.WriteTable(customer);
}

Try it

Dapper - Query

Execute a query and map the result.

Dapper - Query Example
string sql = "SELECT TOP 10 * FROM OrderDetails";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
      var orderDetails = connection.Query<OrderDetail>(sql).ToList();
      
      FiddleHelper.WriteTable(orderDetails);
}

Try it

Dapper - Parameters

Use parameter in your Dapper query.

Dapper - Parameter Example
string sql = "INSERT INTO Customers (CustomerName) Values (@CustomerName);";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{

      var affectedRows = connection.Execute(sql, new {CustomerName = "Mark"});

      Console.WriteLine(affectedRows);
   
      var customer = connection.Query<Customer>("Select * FROM CUSTOMERS WHERE CustomerName = 'Mark'").ToList();
      
      FiddleHelper.WriteTable(customer);
}

Try it

Dapper - Result

Map the query result to different types.

Dapper - Result Example
string sql = "SELECT TOP 10 * FROM OrderDetails";

using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{   
      var orderDetails = connection.Query<OrderDetail>(sql).ToList();

      Console.WriteLine(orderDetails.Count);
      
      FiddleHelper.WriteTable(orderDetails);
}

Try it