Kako raditi s fluidnim NHibernatom u C #

ORM-ovi (objektni relacijski maperi) pojednostavljuju pristup podacima u vašoj aplikaciji omogućavajući vam pisanje koda za izvršavanje CRUD-ovih operacija (stvaranje, čitanje, ažuriranje i brisanje). ORM okviri već se dugo koriste za uklanjanje neusklađenosti impedancije koja postoji između objekta i modela podataka u aplikaciji. U osnovi vam ORM-ovi omogućuju pisanje koda za izvršavanje CRUD operacija bez potrebe za izravnom interakcijom s temeljnim davateljem baze podataka. Dakle, upotreba ORM-ova pomaže vam da izolirate objektni model svoje aplikacije od podatkovnog modela.

Zašto tečni NHibernat?

NHibernate podatke o mapiranju pohranjuje u XML formatu u .hbm datoteke - trebali biste imati po jednu .hbm datoteku za svaku klasu entiteta. Ova .hbm datoteka koristi se za mapiranje entiteta u odgovarajuće tablice baze podataka. Koristeći Fluent NHibernate, više ne morate koristiti glomazne datoteke .hbm.xml koje ste morali koristiti tijekom rada s NHibernateom.

Fluent NHibernate je statički kompilirani, sigurni sastavni dio popularnog ORM alata NHibernate koji se može koristiti za stvaranje mapiranja između POCO klasa i NHibernate motora bez potrebe za glomaznim XML datotekama. Pruža Fluent API, a također vam omogućuje upotrebu LINQ-a za traženje podataka na vrhu motora NHibernate. U odjeljcima koji slijede razgovarat ćemo o tome kako možemo instalirati Fluent NHibernate, stvoriti modele, mapirati te modele ili klase entiteta i koristiti Fluent NHibernate za izvođenje CRUD operacija.

Početak rada

Da biste započeli s korištenjem tekućeg NHibernata, slijedite ove korake:

  1. Otvorite Visual Studio 2015 IDE
  2. Kliknite Datoteka -> Novo -> Projekt
  3. Izradite novi projekt - radi jednostavnosti izradite Windows aplikaciju
  4. Navedite naziv projekta
  5. Kliknite U redu da biste spremili projekt

Sad kad je u Visual Studiju stvoren projekt, možda ćete htjeti instalirati Fluent NHibernate kako biste ga koristili u svojoj aplikaciji. Ako imate instaliran NuGet, najjednostavnija je opcija instalirati Fluent NHibernate putem NuGet Package Managera. Da biste to učinili, odaberite projekt u prozoru Solution Explorer, desnom tipkom miša i odaberite opciju "Upravljanje NuGet paketima ..." da biste instalirali Fluent NHibernate framework iz NuGet-a.

Rad s fluidnim NHibernatom

Da biste radili s Fluent NHibernateom, prvo biste trebali stvoriti klasu modela. Razmotrite sljedeću tablicu baze podataka.

CREATE TABLE [dbo].[Product]

(

   [Id] INT NOT NULL PRIMARY KEY,

   [Name] VARCHAR(50) NULL,

   [Description] VARCHAR(50) NULL

)

Evo odgovarajuće klase modela.

public class Product

   {

       public virtual int Id { get; set; }

       public virtual string Name { get; set; }

       public virtual string Description { get; set; }

   }

Sada kada je tablica baze podataka i odgovarajuća klasa modela spremna, sljedeći je korak stvaranje potrebnog mapiranja. Za mapiranje entiteta u Fluent NHibernate trebali biste imati odgovarajuću klasu mapiranja. Takve klase mapiranja trebale bi biti izvedene iz ClassMap gdje T predstavlja entitet koji koristite. Tečni NHibernate koristi čvrsto otkucane C # klase za mapiranje svojstava klasa modela u odgovarajuća polja tablica baze podataka.

Evo klase mapiranja pod nazivom ProductMap.

public class ProductMap : ClassMap

   {

       public ProductMap()

       {

           Id(x => x.Id);

           Map(x => x.Name);

           Map(x => x.Description);

           Table("Product");

       }

   }

Sljedeći je korak stvaranje pomoćne klase za povezivanje s našom bazom podataka. Evo kako bi ovaj razred mogao izgledati:

public static class FluentNHibernateHelper

   {

       public static ISession OpenSession()

       {

string connectionString = "Write your database connection string here";

           ISessionFactory sessionFactory = Fluently.Configure()

               .Database(MsSqlConfiguration.MsSql2012

                 .ConnectionString(connectionString).ShowSql()

               )

               .Mappings(m =>

                         m.FluentMappings

                             .AddFromAssemblyOf())

               .ExposeConfiguration(cfg => new SchemaExport(cfg)

                .Create(false, false))

               .BuildSessionFactory();

           return sessionFactory.OpenSession();

       }

   }

Obratite pažnju na poziv sessionFactory.OpenSession () u posljednjoj izjavi - ovaj poziv zapravo stvara sesiju komunikacije s osnovnom bazom podataka, tj. Otvara vezu s bazom podataka koja se koristi. Sada se možete pozvati na statičku metodu FluentNHibernateHelper.OpenSession () da biste otvorili vezu s bazom podataka. Sljedeći isječak koda ilustrira kako možete iskoristiti pomoćnu klasu stvorenu ranije za dodavanje zapisa proizvoda u tablicu baze podataka proizvoda.

static void Main(string[] args)

       {

           using (var session = FluentNHibernateHelper.OpenSession())

           {

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

               session.SaveOrUpdate(product);

           }

       }

Sljedeći isječak koda pokazuje kako možete tražiti podatke iz baze podataka pomoću naše pomoćne klase Fluent NHibernate.

using (ISession session = FluentNHibernateHelper.OpenSession())

           {

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

               //Usual code

           }

Da biste radili s primjerima koda danim u ovom članku, trebali biste osigurati da su sljedeći prostori imena dodani u vaš razred.

  • pomoću FluentNHibernate.Cfg;
  • pomoću FluentNHibernate.Cfg.Db;
  • pomoću NHibernata;
  • pomoću NHibernate.Linq;
  • pomoću NHibernate.Tool.hbm2ddl;
  • pomoću System.Linq;

O radu s Fluent NHibernateom možete saznati više s GitHub-a.