Programmering

Hvordan jobbe med flytende NHibernate i C #

ORM-er (objektrelasjonskartleggere) forenkler datatilgang i applikasjonen din ved å la deg skrive kode for å utføre CRUD (Create, Read, Update, and Delete) -operasjoner. ORM-rammeverk har vært i bruk i lang tid for å eliminere impedansforskjellen mellom objektet og datamodellene i et program. I hovedsak lar ORMer deg skrive kode for å utføre CRUD-operasjoner uten behov for å samhandle med den underliggende databaseleverandøren direkte. Dermed hjelper bruk av ORMer deg til å isolere objektmodellen til applikasjonen din fra datamodellen.

Hvorfor flytende NHibernate?

NHibernate lagrer kartinformasjonen i XML-format i. Hbm-filer - du bør ha en. Hbm-fil for hver enhetsklasse. Denne .hbm-filen brukes til å kartlegge enhetene til de tilsvarende databasetabellene. Når du bruker Fluent NHibernate, trenger du ikke lenger å bruke de tungvinte .hbm.xml-filene du har måttet bruke når du jobber med NHibernate.

Flytende NHibernate er det statisk kompilerte, kompilerte sikre motstykket til det populære ORM-verktøyet NHibernate som kan brukes til å lage kartlegging mellom POCO-klassene og NHibernate-motoren sans behovet for tungvint XML-filer. Det gir et flytende API som også lar deg bruke LINQ til å spørre om data på toppen av NHibernate-motoren. I avsnittene som følger vil vi diskutere hvordan vi kan installere Fluent NHibernate, lage modeller, kartlegge disse modellene eller enhetsklasser og bruke Fluent NHibernate til å utføre CRUD-operasjoner.

Starter

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

  1. Åpne Visual Studio 2015 IDE
  2. Klikk på Fil -> Ny -> Prosjekt
  3. Lag et nytt prosjekt - for enkelhets skyld, opprett et Windows-program
  4. Spesifiser et navn på prosjektet
  5. Klikk OK for å lagre prosjektet

Nå som et prosjekt er opprettet i Visual Studio, vil du kanskje installere Fluent NHibernate for å bruke det i applikasjonen din. Hvis du har NuGet installert, er det enkleste alternativet å installere Fluent NHibernate via NuGet Package Manager. For å gjøre dette, velg prosjektet i Solution Explorer Window, høyreklikk og velg "Manage NuGet Packages ..." for å installere Fluent NHibernate framework fra NuGet.

Jobber med flytende NHibernate

For å jobbe med Fluent NHibernate, må du først lage en modellklasse. Vurder følgende databasetabell.

OPPRETT TABELL [dbo]. [Produkt]

(

[Id] INT IKKE NULL PRIMÆR NØKKEL,

[Navn] VARCHAR (50) NULL,

[Beskrivelse] VARCHAR (50) NULL

)

Her er den tilsvarende modellklassen.

offentlig klasse Produkt

   {

offentlig virtuell int Id {get; sett; }

offentlig virtuell streng Navn {get; sett; }

offentlig virtuell streng Beskrivelse {get; sett; }

   }

Nå som databasetabellen og den tilsvarende modellklassen er klar, er neste trinn å lage den nødvendige kartleggingen. For å kartlegge en enhet i flytende NHibernate, bør du ha en tilsvarende kartleggingsklasse. Slike kartklasser bør komme fra ClassMap der T representerer enheten du bruker. Flytende NHibernate bruker sterkt typte C # -klasser for å kartlegge egenskapene til modellklassene til de tilsvarende feltene i databasetabellene.

Her er kartklassen som heter ProductMap.

offentlig klasse ProductMap: ClassMap

   {

offentlig ProductMap ()

       {

Id (x => x.Id);

Kart (x => x.Name);

Kart (x => x.Beskrivelse);

Tabell ("Produkt");

       }

   }

Neste trinn er å lage en hjelperklasse for å koble til databasen vår. Slik ser denne klassen ut:

offentlig statisk klasse FluentNHibernateHelper

   {

offentlig statisk ISession OpenSession ()

       {

string connectionString = "Skriv databaseforbindelsesstrengen her";

ISessionFactory sessionFactory = Flytende.Konfigurer ()

.Database (MsSqlConfiguration.MsSql2012

.ConnectionString (connectionString) .ShowSql ()

               )

.Kartlegginger (m =>

m.FluentMappings

.AddFromAssemblyOf ())

.ExposeConfiguration (cfg => new SchemaExport (cfg)

.Create (false, false))

.BuildSessionFactory ();

retur sessionFactory.OpenSession ();

       }

   }

Legg merke til samtalen til sessionFactory.OpenSession () i den siste uttalelsen - denne samtalen oppretter faktisk en økt med kommunikasjon med den underliggende databasen, dvs. den åpner en forbindelse til databasen som er i bruk. Du kan nå påberope den statiske metoden FluentNHibernateHelper.OpenSession () for å åpne en forbindelse til databasen. Følgende kodebit illustrerer hvordan du kan dra nytte av hjelperklassen som ble opprettet tidligere for å legge til en produktregistrering i produktdatabasetabellen.

statisk tomrom Main (streng [] args)

       {

bruker (var session = FluentNHibernateHelper.OpenSession ())

           {

var product = new Product {Name = "Lenovo Laptop", Description = "Sample product"};

session.SaveOrUpdate (produkt);

           }

       }

Følgende kodebit viser hvordan du kan spørre om data fra databasen ved hjelp av vår flytende NHibernate hjelperklasse.

bruker (ISession session = FluentNHibernateHelper.OpenSession ())

           {

var products = session.Query (). ToList ();

// Vanlig kode

           }

For å jobbe med kodeeksemplene gitt i denne artikkelen, bør du forsikre deg om at følgende navneområder er lagt til i klassen din.

  • ved hjelp av FluentNHibernate.Cfg;
  • ved hjelp av FluentNHibernate.Cfg.Db;
  • bruk av NHibernate;
  • ved hjelp av NHibernate.Linq;
  • bruker NHibernate.Tool.hbm2ddl;
  • ved hjelp av System.Linq;

Du kan lære mer om å jobbe med Fluent NHibernate fra GitHub.

$config[zx-auto] not found$config[zx-overlay] not found