Come utilizzare Dapper ORM in C #

I mappatori relazionali a oggetti (ORM) sono in uso da molto tempo per eliminare la mancata corrispondenza di impedenza che esiste tra i modelli a oggetti dei linguaggi di programmazione ei modelli di dati nei database relazionali. Dapper è un ORM leggero e open source sviluppato dal team di Stack Overflow. Dapper è molto veloce rispetto ad altri ORM principalmente a causa del suo peso leggero.

Dapper è stato progettato pensando alle prestazioni e alla facilità d'uso. Fornisce supporto per l'associazione di oggetti statica e dinamica utilizzando transazioni, stored procedure o inserimenti di dati in blocco.

Installa Dapper ORM in Visual Studio

Per iniziare a utilizzare Dapper, segui questi passaggi:

  1. Apri Visual Studio 
  2. Fare clic su File -> Nuovo -> Progetto
  3. Selezionare "Web -> Applicazione Web ASP.Net" dalla finestra di dialogo "Nuovo progetto"
  4. Specifica un nome per il progetto web
  5. Seleziona il modello di progetto vuoto per ASP.Net
  6. Fare clic su OK per salvare il progetto

Questo crea un progetto di applicazione web ASP.Net vuoto.

Se è installato NuGet, è possibile installare Dapper utilizzando NuGet: è sufficiente selezionare il progetto nella finestra Esplora soluzioni, fare clic con il pulsante destro del mouse su "Gestisci pacchetti NuGet ..." e trovare Dapper. Quindi fare clic su Installa per avviare l'installazione di Dapper. Una volta che Dapper è stato installato con successo, sei a posto.

CRUD in .Net utilizzando Dapper ORM

Scriviamo ora del codice usando Dapper per eseguire operazioni CRUD su un database. Considera un database denominato che contiene una tabella denominata Author con i seguenti campi.

  • ID
  • Nome di battesimo
  • Cognome

È necessario creare una classe entità (classe POCO) per questa tabella di database per semplicità quando si lavora con Dapper. Ecco la classe di entità denominata Author che corrisponde alla tabella Author nel database.

public class Author

    {

        public int Id { get; set; }

        public string FirstName { get; set; }

        public string LastName { get; set; }

    }

Il Query()metodo di estensione in Dapper consente di recuperare i dati dal database e popolare i dati nel modello a oggetti. Il metodo seguente recupera tutti i record dalla tabella Author, li archivia in memoria e restituisce la raccolta.

public List ReadAll()

{

         using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings[“AdventureWorks”].ConnectionString))

         {

            return db.Query

             (“Select * From Author”).ToList();

        }

    }

Nota che dovresti includere lo spazio dei nomi Dapper nel tuo programma per sfruttare il framework Dapper.

Il metodo seguente illustra come cercare un particolare record dalla tabella Author.

public Author Find(int id)    

    {

        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))

        {

            return db.Query(“Select * From Author “ + 

            WHERE Id = @Id”, new { id }).SingleOrDefault();

        }

    }

Il Execute()metodo del framework Dapper può essere utilizzato per inserire, aggiornare o eliminare dati in un database. Questo metodo restituisce un valore intero che implica il numero di righe che sono state influenzate durante l'esecuzione della query.

Il metodo seguente illustra come aggiornare un record utilizzando il framework Dapper.

public int Update(Author author)

    {

        using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))

        {

            string sqlQuery +

            “ LastName = @LastName “ + “WHERE Id = @Id”;

            int rowsAffected = db.Execute(sqlQuery, author);

            return rowsAffected;

        }

    }

Come puoi vedere nello snippet di codice sopra, il Update()metodo restituisce il numero di righe che sono state interessate, ovvero il numero di record che sono stati aggiornati. In questo esempio, solo un record è stato aggiornato e quindi il metodo restituirà 1 in caso di successo.

Stored procedure utilizzando Dapper ORM

Per lavorare con le stored procedure utilizzando Dapper, è necessario menzionare esplicitamente il tipo di comando quando si chiamano Queryi Executemetodi o . Di seguito è riportato un esempio che mostra come utilizzare le stored procedure con Dapper.

 public List Read()

    {

        using (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings [“AdventureWorks”].ConnectionString))

        {

            string readSp;

            return db.Query(readSp, commandType: CommandType.StoredProcedure).ToList();

        }

    }

Il framework Dapper supporta anche le transazioni, ovvero è possibile utilizzare operazioni transazionali se necessario. A tale scopo, è possibile sfruttare i metodi BeginTransaction()e EndTransaction()come si fa normalmente quando si lavora con le transazioni in ADO.Net. Dovresti quindi scrivere le tue dichiarazioni transazionali all'interno delle chiamate al metodo BeginTransactione EndTransaction.

Il Dapper micro ORM è estremamente leggero e semplice da usare. Non genera il tuo SQL per te, ma semplifica il mapping dei risultati delle query ai tuoi POCO (semplici vecchi oggetti CLR). La cosa migliore è che si ottiene una velocità di esecuzione molto più rapida rispetto a Entity Framework, quasi la stessa di ADO.Net, in effetti. 

-

Fai di più con C #:

  • Come lavorare con AutoMapper in C #
  • Quando usare una classe astratta e un'interfaccia in C #
  • Come lavorare con i thread in C #
  • Come utilizzare Dapper ORM in C #
  • Come implementare il modello di progettazione del repository in C #
  • Come implementare un semplice logger in C #
  • Come lavorare con i delegati in C #
  • Come lavorare con i delegati Action, Func e Predicate in C #
  • Come lavorare con log4net in C #
  • Come lavorare con la riflessione in C #