Programmering

Sådan arbejder du med flydende NHibernate i C #

ORM'er (objektrelationskortlæggere) forenkler dataadgang i din applikation ved at lade dig skrive kode for at udføre CRUD (Opret, læse, opdatere og slette) operationer. ORM-rammer har været i brug i lang tid for at eliminere den impedansmatchning, der findes mellem objektet og datamodeller i en applikation. I det væsentlige giver ORM'er dig mulighed for at skrive kode for at udføre CRUD-operationer uden behov for at interagere med den underliggende databaseudbyder direkte. Brug af ORM'er hjælper dig således med at isolere objektmodellen for din applikation fra datamodellen.

Hvorfor flydende NHibernate?

NHibernate gemmer kortlægningsoplysningerne i XML-format i .hbm-filer - du skal have en .hbm-fil for hver enhedsklasse. Denne. Hbm-fil bruges til at kortlægge enhederne til de tilsvarende databasetabeller. Når du bruger Fluent NHibernate, behøver du ikke længere bruge de besværlige .hbm.xml-filer, som du har været nødt til at bruge, når du arbejder med NHibernate.

Flydende NHibernate er den statisk kompilerede, kompilere sikre modstykke til det populære ORM-værktøj NHibernate, der kan bruges til at skabe kortlægning mellem POCO-klasser og NHibernate-motoren sans behovet for besværlige XML-filer. Det giver en Fluent API giver dig også mulighed for at bruge LINQ til at forespørge data oven på NHibernate-motoren. I de følgende afsnit diskuterer vi, hvordan vi kan installere Fluent NHibernate, oprette modeller, kortlægge disse modeller eller enhedsklasser og bruge Fluent NHibernate til at udføre CRUD-operationer.

Kom godt i gang

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

  1. Åbn Visual Studio 2015 IDE
  2. Klik på File -> New -> Project
  3. Opret et nyt projekt - for enkelheds skyld skal du oprette en Windows-applikation
  4. Angiv et navn til projektet
  5. Klik på OK for at gemme projektet

Nu hvor et projekt er oprettet i Visual Studio, kan du installere Fluent NHibernate for at bruge det i din applikation. Hvis du har NuGet installeret, er den nemmeste mulighed at installere Fluent NHibernate via NuGet Package Manager. For at gøre dette skal du vælge projektet i vinduet Solution Explorer, højreklikke og vælge "Manage NuGet Packages ..." for at installere Fluent NHibernate framework fra NuGet.

Arbejde med flydende NHibernate

For at arbejde med Fluent NHibernate skal du først oprette en modelklasse. Overvej følgende databasetabel.

Opret TABEL [dbo]. [Produkt]

(

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

[Navn] VARCHAR (50) NULL,

[Beskrivelse] VARCHAR (50) NULL

)

Her er den tilsvarende modelklasse.

produkt i offentlig klasse

   {

offentlig virtuel int-id {get; sæt; }

offentlig virtuel streng Navn {get; sæt; }

offentlig virtuel streng Beskrivelse {get; sæt; }

   }

Nu hvor databasetabellen og den tilsvarende modelklasse er klar, er næste trin at oprette den nødvendige kortlægning. For at kortlægge en enhed i Fluent NHibernate skal du have en tilsvarende kortklasse. Sådanne kortlægningsklasser skal stamme fra ClassMap, hvor T repræsenterer den enhed, du bruger. Flydende NHibernate bruger stærkt indtastede C # -klasser til at kortlægge egenskaberne for modelklasser til de tilsvarende felter i databasetabellerne.

Her er kortklassen ved navn ProductMap.

offentlig klasse ProductMap: ClassMap

   {

offentlig ProductMap ()

       {

Id (x => x.Id);

Kort (x => x.navn);

Kort (x => x.Beskrivelse);

Tabel ("Produkt");

       }

   }

Det næste trin er at oprette en hjælperklasse til at oprette forbindelse til vores database. Sådan ser denne klasse ud:

offentlig statisk klasse FluentNHibernateHelper

   {

offentlig statisk ISession OpenSession ()

       {

string connectionString = "Skriv din databaseforbindelsesstreng her";

ISessionFactory sessionFactory = Flydende.Konfigurer ()

.Database (MsSqlConfiguration.MsSql2012

.ConnectionString (connectionString) .ShowSql ()

               )

.Kortlægninger (m =>

m.FluentMappings

.AddFromAssemblyOf ())

.ExposeConfiguration (cfg => new SchemaExport (cfg)

Opret (falsk, falsk))

.BuildSessionFactory ();

return sessionFactory.OpenSession ();

       }

   }

Bemærk opkaldet til sessionFactory.OpenSession () i den sidste erklæring - dette opkald opretter faktisk en kommunikationssession med den underliggende database, dvs. det åbner en forbindelse til den anvendte database. Du kan nu påberåbe den statiske metode FluentNHibernateHelper.OpenSession () for at åbne en forbindelse til databasen. Følgende kodestykke illustrerer, hvordan du kan drage fordel af den tidligere oprettede hjælperklasse til at tilføje en produktregistrering til tabellen Produktdatabase.

statisk ugyldigt Main (streng [] args)

       {

ved hjælp af (var session = FluentNHibernateHelper.OpenSession ())

           {

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

session.SaveOrUpdate (produkt);

           }

       }

Følgende kodestykke viser, hvordan du kan forespørge på data fra databasen ved hjælp af vores Fluent NHibernate hjælperklasse.

ved hjælp af (ISession-session = FluentNHibernateHelper.OpenSession ())

           {

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

// Almindelig kode

           }

For at arbejde med kodeeksemplerne i denne artikel skal du sikre dig, at følgende navneområder er blevet føjet til din klasse.

  • ved hjælp af FluentNHibernate.Cfg;
  • ved hjælp af FluentNHibernate.Cfg.Db;
  • ved hjælp af NHibernate;
  • ved hjælp af NHibernate.Linq;
  • ved hjælp af NHibernate.Tool.hbm2ddl;
  • ved hjælp af System.Linq;

Du kan lære mere om at arbejde med Fluent NHibernate fra GitHub.