Programování

Jak pracovat s Fluent NHibernate v C #

ORM (objektově relační mapovače) zjednodušují přístup k datům ve vaší aplikaci tím, že vám umožňují psát kód pro provádění operací CRUD (vytváření, čtení, aktualizace a mazání). ORM rámce se používají dlouhou dobu k eliminaci nesouladu impedance, který existuje mezi objektem a datovými modely v aplikaci. V podstatě vám ORM umožňují psát kód k provádění operací CRUD bez nutnosti přímé interakce s poskytovatelem podkladové databáze. Použití ORM vám tedy pomůže izolovat objektový model vaší aplikace od datového modelu.

Proč Fluent NHibernate?

NHibernate ukládá informace o mapování ve formátu XML do souborů .hbm - pro každou třídu entit byste měli mít jeden soubor .hbm. Tento soubor .hbm se používá k mapování entit na odpovídající databázové tabulky. Při používání aplikace Fluent NHibernate již nemusíte používat těžkopádné soubory .hbm.xml, které jste museli používat při práci s NHibernate.

Fluent NHibernate je staticky kompilovaný a kompilovatelný bezpečný protějšek populárního nástroje ORM NHibernate, který lze použít k vytvoření mapování mezi třídami POCO a strojem NHibernate bez nutnosti těžkopádných souborů XML. Poskytuje rozhraní Fluent API, které vám také umožňuje používat LINQ k dotazování na data na stroji NHibernate. V následujících částech probereme, jak můžeme nainstalovat Fluent NHibernate, vytvářet modely, mapovat tyto modely nebo třídy entit a používat Fluent NHibernate k provádění operací CRUD.

Začínáme

Chcete-li začít používat Fluent NHibernate, postupujte takto:

  1. Otevřete IDE sady Visual Studio 2015
  2. Klikněte na Soubor -> Nový -> Projekt
  3. Vytvořte nový projekt - z důvodu jednoduchosti vytvořte aplikaci Windows
  4. Zadejte název projektu
  5. Kliknutím na OK projekt uložíte

Nyní, když byl projekt vytvořen v sadě Visual Studio, možná budete chtít nainstalovat Fluent NHibernate, abyste jej mohli použít ve své aplikaci. Pokud máte nainstalovaný NuGet, nejjednodušší možností je nainstalovat Fluent NHibernate prostřednictvím Správce balíčků NuGet. Chcete-li to provést, vyberte projekt v okně Průzkumníka řešení, klikněte pravým tlačítkem a vyberte možnost „Spravovat balíčky NuGet…“ a nainstalujte Fluent NHibernate framework z NuGet.

Práce s Fluent NHibernate

Abyste mohli pracovat s Fluent NHibernate, musíte nejprve vytvořit třídu modelu. Zvažte následující databázovou tabulku.

VYTVOŘIT TABULKU [dbo]. [Produkt]

(

[Id] INT NENÍ NULL PRIMÁRNÍ KLÍČ,

[Jméno] VARCHAR (50) NULL,

[Popis] VARCHAR (50) NULL

)

Tady je odpovídající třída modelu.

veřejná třída Produkt

   {

public virtual int Id {get; soubor; }

veřejný virtuální řetězec Název {get; soubor; }

veřejný virtuální řetězec Popis {get; soubor; }

   }

Nyní, když je připravena databázová tabulka a odpovídající třída modelu, je dalším krokem vytvoření potřebného mapování. Chcete-li mapovat entitu ve Fluent NHibernate, měli byste mít odpovídající třídu mapování. Takové třídy mapování by měly pocházet z ClassMap, kde T představuje entitu, kterou používáte. Fluent NHibernate používá třídy C # se silným typem k mapování vlastností tříd modelu na odpovídající pole databázových tabulek.

Tady je třída mapování s názvem ProductMap.

veřejná třída ProductMap: ClassMap

   {

public ProductMap ()

       {

Id (x => x.Id);

Mapa (x => x.Name);

Mapa (x => x. Popis);

Tabulka („Produkt“);

       }

   }

Dalším krokem je vytvoření třídy pomocníka pro připojení k naší databázi. Takto by vypadala tato třída:

veřejná statická třída FluentNHibernateHelper

   {

veřejná statická ISession OpenSession ()

       {

string connectionString = "Sem napište řetězec připojení k databázi";

ISessionFactory sessionFactory = Fluently.Configure ()

.Database (MsSqlConfiguration.MsSql2012

.ConnectionString (connectionString) .ShowSql ()

               )

.Mappings (m =>

m.FluentMappings

.AddFromAssemblyOf ())

.ExposeConfiguration (cfg => nový SchemaExport (cfg)

.Create (false, false))

.BuildSessionFactory ();

návrat sessionFactory.OpenSession ();

       }

   }

Všimněte si volání sessionFactory.OpenSession () v posledním příkazu - toto volání ve skutečnosti vytvoří relaci komunikace s podkladovou databází, tj. Otevře připojení k používané databázi. Nyní můžete vyvolat statickou metodu FluentNHibernateHelper.OpenSession () a otevřít připojení k databázi. Následující fragment kódu ukazuje, jak můžete využít dříve vytvořenou pomocnou třídu pro přidání záznamu o produktu do tabulky databáze produktů.

static void Main (řetězec [] args)

       {

pomocí (var session = FluentNHibernateHelper.OpenSession ())

           {

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

session.SaveOrUpdate (produkt);

           }

       }

Následující fragment kódu ukazuje, jak můžete dotazovat na data z databáze pomocí naší pomocné třídy Fluent NHibernate.

pomocí (relace ISession = FluentNHibernateHelper.OpenSession ())

           {

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

// Obvyklý kód

           }

Chcete-li pracovat s příklady kódu uvedenými v tomto článku, měli byste zajistit, aby byly do vaší třídy přidány následující obory názvů.

  • pomocí FluentNHibernate.Cfg;
  • pomocí FluentNHibernate.Cfg.Db;
  • použití NHibernate;
  • pomocí NHibernate.Linq;
  • pomocí NHibernate.Tool.hbm2ddl;
  • pomocí System.Linq;

Další informace o práci s Fluent NHibernate najdete na GitHubu.

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