Dapper.NETIniziare con Dapper.NET


Osservazioni

Cos'è Dapper?

Dapper è un micro-ORM per .Net che estende l' IDbConnection , semplificando l'impostazione della query, l'esecuzione e la lettura dei risultati.

Come lo ottengo?

Attività comuni

Versioni

Versione Gli appunti Data di rilascio
1.50.0 core-clr / asp.net 5.0 build contro RTM 2016/06/29
1.42.0 2015/05/06
1.40.0 2015/04/03
1.30.0 2014/08/14
1.20.0 2014/05/08
1.10.0 2012-06-27
1.0.0 2011-04-14

Installa Dapper da Nuget

Cerca nella GUI di Visual Studio:

Strumenti> NuGet Package Manager> Gestisci pacchetti per la soluzione ... (Visual Studio 2015)

screenshot dell'interfaccia del gestore di pacchetti Visual Studio con Dapper selezionato

Oppure esegui questo comando in un'istanza di Nuget Power Shell per installare l'ultima versione stabile

Install-Package Dapper
 

O per una versione specifica

Install-Package Dapper -Version 1.42.0
 

Usando Dapper in C #

using System.Data;
using System.Linq;
using Dapper;

class Program
{
    static void Main()
    {
        using (IDbConnection db = new SqlConnection("Server=myServer;Trusted_Connection=true"))
        {
            db.Open();
            var result = db.Query<string>("SELECT 'Hello World'").Single();
            Console.WriteLine(result);
        }
    }
}
 

Il wrapping della connessione in un blocco Using chiuderà la connessione

Utilizzo di Dapper in LINQPad

LINQPad è ottimo per testare le query del database e include l'integrazione NuGet . Per utilizzare Dapper in LINQPad premere F4 per aprire Proprietà query, quindi selezionare Aggiungi NuGet . Cerca net dot dapper e seleziona Aggiungi a query . Dovrai anche fare clic su Aggiungi spazi dei nomi ed evidenziare Dapper per includere i Metodi di estensione nella query LINQPad.

Una volta abilitato Dapper è possibile modificare il menu a discesa Lingua in C # , mappare i risultati delle query in classi C # e utilizzare il metodo .Dump () per ispezionare i risultati:

void Main()
{
	using (IDbConnection db = new SqlConnection("Server=myServer;Trusted_Connection=true")){
		db.Open();
		var scalar = db.Query<string>("SELECT GETDATE()").SingleOrDefault();
		scalar.Dump("This is a string scalar result:");
		
		var results = db.Query<myobject>(@"
		SELECT * FROM (
		VALUES (1,'one'),
			(2,'two'),
			(3,'three')
		) AS mytable(id,name)");
		results.Dump("This is a table mapped to a class:");
	}
}

// Define other methods and classes here
class myobject {
	public int id { get; set; }
	public string name { get; set; }
}
 

I risultati durante l'esecuzione del programma sarebbero simili a questi:

Screenshot di LINQPad