Programmering

Hvordan bruke Dapper ORM i C #

Object relational mappers (ORMs) har vært i bruk i lang tid for å eliminere impedansmatchingen som eksisterer mellom objektmodellene til programmeringsspråk og datamodellene i relasjonsdatabaser. Dapper er en åpen kildekode, lett ORM utviklet av Stack Overflow-teamet. Dapper er veldig rask sammenlignet med andre ORM-er, hovedsakelig på grunn av sin lette vekt.

Dapper ble bygget med tanke på ytelse og brukervennlighet. Det gir støtte for både statisk og dynamisk objektbinding ved hjelp av transaksjoner, lagrede prosedyrer eller bulkinnsatser av data.

Installer Dapper ORM i Visual Studio

For å komme i gang med å bruke Dapper, følg disse trinnene:

  1. Åpne Visual Studio
  2. Klikk på Fil -> Ny -> Prosjekt
  3. Velg “Web -> ASP.Net Web Application” fra dialogboksen “Nytt prosjekt”
  4. Spesifiser et navn for webprosjektet
  5. Velg den tomme prosjektmalen for ASP.Net
  6. Klikk OK for å lagre prosjektet

Dette skaper et tomt ASP.Net-webapplikasjonsprosjekt.

Hvis du har NuGet installert, kan du installere Dapper ved hjelp av NuGet — bare velg prosjektet i Solution Explorer-vinduet, høyreklikk på “Manage NuGet Packages ...” og finn Dapper. Klikk deretter på Installer for å starte installasjonen av Dapper. Når Dapper er installert, er du klar.

CRUD i .Net ved hjelp av Dapper ORM

La oss nå skrive litt kode ved hjelp av Dapper for å utføre CRUD-operasjoner mot en database. Vurder en database med navnet som inneholder en tabell som heter Forfatter med følgende felt.

  • ID
  • Fornavn
  • Etternavn

Du bør opprette en enhetsklasse (POCO-klasse) for denne databasetabellen for enkelhet når du jobber med Dapper. Her er enhetsklassen med navnet Forfatter som tilsvarer forfattertabellen i databasen.

offentlig klasse Forfatter

    {

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

    }

De Spørsmål() utvidelsesmetoden i Dapper lar deg hente data fra databasen og fylle ut data i objektmodellen din. Følgende metode henter alle postene fra forfattertabellen, lagrer dem i minnet og returnerer samlingen.

offentlig liste Les alle ()

{

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

         {

returner db. spørring

(“Velg * fra forfatter”). ToList ();

        }

    }

Merk at du bør inkludere Dapper-navnområdet i programmet ditt for å utnytte Dapper-rammeverket.

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

offentlig forfatterfunn (int id)

    {

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

        {

returner db.Query (“Velg * Fra forfatter” +

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

        }

    }

De Henrette() metoden for Dapper-rammeverket kan brukes til å sette inn, oppdatere eller slette data i en database. Denne metoden returnerer en heltallverdi som antyder antall rader som har blitt påvirket av kjøringen av spørringen.

Følgende metode illustrerer hvordan du kan oppdatere en post ved hjelp av Dapper-rammeverket.

public int Update (Forfatterforfatter)

    {

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

        {

streng sqlQuery +

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

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

retur raderPåvirket;

        }

    }

Som du kan se i kodebiten ovenfor, er Oppdater() metoden returnerer antall rader som er berørt, dvs. antall poster som er oppdatert. I dette eksemplet er bare én post oppdatert, og dermed vil metoden gi 1 suksess.

Lagrede prosedyrer ved bruk av Dapper ORM

For å jobbe med lagrede prosedyrer ved bruk av Dapper, bør du nevne kommandotypen eksplisitt når du ringer til Spørsmål eller Henrette metoder. Her er et eksempel som viser hvordan du kan bruke lagrede prosedyrer med Dapper.

 offentlig liste Les ()

    {

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

        {

streng readSp;

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

        }

    }

Dapper-rammeverket støtter også transaksjoner, dvs. du kan bruke transaksjonsoperasjoner om nødvendig. For å gjøre dette kan du dra nytte av BeginTransaction () og EndTransaction () metoder som du vanligvis gjør når du arbeider med transaksjoner i ADO.Net. Du må da skrive transaksjonsoppgavene i BeginTransaction og Sluttransaksjon metode samtaler.

Dapper micro ORM er ekstremt lett og enkel å bruke. Det genererer ikke SQL for deg, men gjør det enkelt å kartlegge resultatene av spørsmål til POCO-ene dine (vanlige gamle CLR-objekter). Best av alt, du får mye raskere kjøring enn du gjør med Entity Framework - nesten det samme som ADO.Net, faktisk.

Gjør mer med C #:

  • Hvordan jobbe med AutoMapper i C #
  • Når skal jeg bruke en abstrakt klasse vs. grensesnitt i C #
  • Hvordan jobbe med tråder i C #
  • Hvordan bruke Dapper ORM i C #
  • Slik implementerer du mønsteret for depotdesign i C #
  • Slik implementerer du en enkel logger i C #
  • Hvordan jobbe med delegater i C #
  • Hvordan jobbe med Action-, Func- og Predicate-delegater i C #
  • Hvordan jobbe med log4net i C #
  • Hvordan jobbe med refleksjon i C #
$config[zx-auto] not found$config[zx-overlay] not found