Programmering

Sådan bruges Dapper ORM i C #

Objektrelationskortlægere (ORM'er) har været i brug i lang tid for at eliminere den impedansmatchning, der findes mellem objektsmodellerne i programmeringssprog og datamodellerne i relationsdatabaser. Dapper er en open source, let ORM udviklet af Stack Overflow-teamet. Dapper er meget hurtig sammenlignet med andre ORM'er primært på grund af sin lette vægt.

Dapper blev bygget med ydeevne og brugervenlighed i tankerne. Det understøtter både statisk og dynamisk objektbinding ved hjælp af transaktioner, lagrede procedurer eller bulkindsatser af data.

Installer Dapper ORM i Visual Studio

For at komme i gang med at bruge Dapper skal du følge disse trin:

  1. Åbn Visual Studio
  2. Klik på File -> New -> Project
  3. Vælg "Web -> ASP.Net Web Application" i dialogboksen "Nyt projekt"
  4. Angiv et navn til webprojektet
  5. Vælg den tomme projektskabelon til ASP.Net
  6. Klik på OK for at gemme projektet

Dette skaber et tomt ASP.Net-webapplikationsprojekt.

Hvis du har NuGet installeret, kan du installere Dapper ved hjælp af NuGet - vælg bare projektet i vinduet Solution Explorer, højreklik på “Manage NuGet Packages ...” og find Dapper. Klik derefter på Installer for at starte installationen af ​​Dapper. Når Dapper er blevet installeret med succes, er du klar til at gå.

CRUD i .Net ved hjælp af Dapper ORM

Lad os nu skrive noget kode ved hjælp af Dapper til at udføre CRUD-operationer mod en database. Overvej en database med navnet, der indeholder en tabel kaldet forfatter med følgende felter.

  • ID
  • Fornavn
  • Efternavn

Du skal oprette en enhedsklasse (POCO-klasse) til denne databasetabel for at gøre det nemmere, når du arbejder med Dapper. Her er enhedsklassen ved navn Forfatter, der svarer til forfattertabellen i databasen.

offentlig klasse Forfatter

    {

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

    }

Det Forespørgsel() udvidelsesmetode i Dapper giver dig mulighed for at hente data fra databasen og udfylde data i din objektmodel. Den følgende metode henter alle poster fra forfattertabellen, gemmer dem i hukommelsen og returnerer samlingen.

offentlig liste Læs alle ()

{

ved hjælp af (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings [“AdventureWorks”]. ConnectionString))

         {

return db.Query

(“Vælg * fra forfatter”). ToList ();

        }

    }

Bemærk, at du skal medtage Dapper-navneområdet i dit program for at udnytte Dapper-rammen.

Følgende metode illustrerer, hvordan du kan søge i en bestemt post fra forfattertabellen.

offentlig forfatter Find (int id)

    {

ved hjælp af (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings)["AdventureWorks"]. ConnectionString))

        {

returner db.Query ("Vælg * Fra forfatter" +

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

        }

    }

Det Udfør () metode til Dapper-rammen kan bruges til at indsætte, opdatere eller slette data i en database. Denne metode returnerer et heltal, der antyder antallet af rækker, der er blevet påvirket af udførelsen af ​​forespørgslen.

Følgende metode illustrerer, hvordan du kan opdatere en post ved hjælp af Dapper-rammen.

public int Update (Forfatterforfatter)

    {

ved hjælp af (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings)["AdventureWorks"]. ConnectionString))

        {

streng sqlQuery +

"LastName = @LastName" + "WHERE Id = @Id";

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

return rowAffected;

        }

    }

Som du kan se i ovenstående kodestykke, er Opdatering () metoden returnerer antallet af rækker, der er berørt, hvilket betyder antallet af poster, der er opdateret. I dette eksempel er kun en post blevet opdateret, og metoden vil derfor returnere 1 efter succes.

Lagrede procedurer ved hjælp af Dapper ORM

For at arbejde med lagrede procedurer ved hjælp af Dapper skal du udtrykkeligt nævne kommandotype, når du ringer til Forespørgsel eller den Udfør metoder. Her er et eksempel, der viser, hvordan du kan bruge lagrede procedurer med Dapper.

 offentlig liste Læs ()

    {

ved hjælp af (IDbConnection db = new SqlConnection (ConfigurationManager.ConnectionStrings[“AdventureWorks”]. ConnectionString))

        {

streng readSp;

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

        }

    }

Dapper-rammen understøtter også transaktioner, dvs. du kan bruge transaktionsoperationer, hvis det er nødvendigt. For at gøre dette kan du drage fordel af Begynd transaktion () og Sluttransaktion () metoder, som du normalt gør, når du arbejder med transaktioner i ADO.Net. Du skal derefter skrive dine transaktionsopgørelser inde i Begynd transaktion og Sluttransaktion metodeopkald.

Dapper micro ORM er ekstremt let og nem at bruge. Det genererer ikke din SQL for dig, men gør det nemt at kortlægge resultaterne af forespørgsler til dine POCO'er (almindelige gamle CLR-objekter). Bedst af alt får du meget hurtigere eksekveringshastighed end du gør med Entity Framework - faktisk det samme som ADO.Net.

Gør mere med C #:

  • Sådan arbejder du med AutoMapper i C #
  • Hvornår skal man bruge en abstrakt klasse vs. interface i C #
  • Sådan arbejder du med tråde i C #
  • Sådan bruges Dapper ORM i C #
  • Sådan implementeres depotdesignmønsteret i C #
  • Sådan implementeres en simpel logger i C #
  • Sådan arbejder du med delegerede i C #
  • Sådan arbejder du med Action-, Func- og Predicate-delegerede i C #
  • Sådan arbejder du med log4net i C #
  • Sådan arbejder du med refleksion i C #