NHibernate - Premiers pas

Dans ce chapitre, nous verrons comment démarrer un exemple simple en utilisant NHibernate. Nous allons construire unsimple console application. Pour créer une application console, nous utiliserons Visual Studio 2015, qui contient toutes les fonctionnalités dont vous avez besoin pour créer, tester votre application à l'aide du package NHibernate.

Voici les étapes pour créer un projet à l'aide des modèles de projet disponibles dans Visual Studio.

Step 1 - Ouvrez le studio visuel et cliquez sur l'option de menu Fichier → Nouveau → Projet.

Step 2 - Une nouvelle boîte de dialogue Projet s'ouvre.

Step 3 - Dans le volet gauche, sélectionnez Modèles → Visual C # → Windows.

Step 4 - Dans le volet central, sélectionnez Application console.

Step 5 - Entrez le nom du projet, «NHibernateDemoApp», dans le champ Nom et cliquez sur OK pour continuer.

Step 6 - Une fois le projet créé par Visual Studio, vous verrez un certain nombre de fichiers affichés dans la fenêtre Explorateur de solutions.

Comme vous savez que nous avons créé un projet d'application console simple, nous devons maintenant inclure le package NHibernate dans notre projet console.

Allez dans le menu Outils et sélectionnez NuGet Package Manager → Package Manager Console, cela ouvrira la fenêtre de Package Manager Console.

Spécifiez la commande indiquée ci-dessus Package Manager Consoleet appuyez sur Entrée, il téléchargera toutes les dépendances NHibernate et créera des références à tous les assemblys requis. Une fois l'installation terminée, vous verrez le message comme indiqué dans l'image suivante.

Maintenant que NHibernate est ajouté, nous pouvons maintenant commencer l'implémentation. Donc, nous allons commencer par cartographier un très simpletable appelé Student, qui a simplement une clé primaire entière appelée ID et une colonne FirstName et LastName.

Nous avons besoin d'une classe pour représenter cet élève, alors créons une nouvelle classe appelée Etudiant en cliquant avec le bouton droit sur le projet dans l'explorateur de solutions, puis sélectionnez Ajouter → Classe qui ouvrira la boîte de dialogue Ajouter un nouvel élément.

Entrer Student.csdans le champ de nom, cliquez sur le bouton Ajouter. Dans cette classe Student, nous devons avoir notre clé primaire entière appelée ID, et nous devons créer cette chaîne,FirstName et LastName champs comme indiqué dans l'implémentation complète suivante de la classe Student.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks;

namespace NHibernateDemoApp { 
   
   class Student { 
      public virtual int ID { get; set; } 
      public virtual string LastName { get; set; } 
      public virtual string FirstMidName { get; set; } 
   } 
}

Lorsqu'il s'agit de modèles dans l'application NHibernate, il est plus simple de rendre tous vos champs virtuels. C'est donc notre modèle NHibernate simple que nous utiliserons et le mapperons à la base de données principale.

Passons maintenant à la méthode Main dans la classe Program et créons un nouvel objet de configuration NHibernate.

La première chose que nous devons fournir est le connection string. Il s'agit d'une chaîne de connexion spécifique à la base de données et le moyen le plus simple de trouver la chaîne de connexion est de faire un clic droit sur la base de données dansSQL Server Object Explorer et sélectionnez Propriétés.

Cela ouvrira la fenêtre Propriétés, maintenant faites défiler vers le bas et vous verrez le champ Chaîne de connexion dans la fenêtre Propriétés.

Copiez la chaîne de connexion et spécifiez dans votre code. Voici l'implémentation de la méthode Main dans laquelle nous avons besoin de configuration pour NHibernate.

using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;

using System;
using System.Linq;
using System.Reflection;

namespace NHibernateDemoApp {

   class Program {
   
      static void Main(string[] args) {
         var cfg = new Configuration();
			
         String Data Source = asia13797\\sqlexpress;
         String Initial Catalog = NHibernateDemoDB;
         String Integrated Security = True;
         String Connect Timeout = 15;
         String Encrypt = False;
         String TrustServerCertificate = False;
         String ApplicationIntent = ReadWrite;
         String MultiSubnetFailover = False;
			
         cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source + 
            Initial Catalog + Integrated Security + Connect Timeout + Encrypt +
            TrustServerCertificate + ApplicationIntent + MultiSubnetFailover";
         
                     
            x.Driver<SqlClientDriver>(); 
            x.Dialect<MsSql2008Dialect>();
         });
         
         cfg.AddAssembly(Assembly.GetExecutingAssembly());
         
         var sefact = cfg.BuildSessionFactory(); 
         
         using (var session = sefact.OpenSession()) {
         
            using (var tx = session.BeginTransaction()) {
               //perform database logic 
               tx.Commit();
            }
            
            Console.ReadLine(); 
         } 
      } 
   } 
}

Après la chaîne de connexion, nous devons fournir un pilote, qui est le SQLClientDriver puis nous devons également lui fournir un dialecte, quelle version de SQL Server, et nous allons utiliser MS SQL 2008.

NHibernate sait désormais se connecter à la base de données. L'autre chose que nous devons faire est de lui fournir une liste de modèles que nous allons cartographier.

Nous pouvons le faire en ajoutant un assembly, donc en spécifiant le Assembly.GetExecutingAssemblyet c'est là que le programme trouvera les fichiers de mappage. Les fichiers de mappage indiquent à NHibernate comment passer des classes C # aux tables de base de données.

SessionFactory compile toutes les métadonnées nécessaires à l'initialisation de NHibernate. SessionFactory peut être utilisé pour créer des sessions, qui sont à peu près analogues aux connexions de base de données. La manière appropriée est donc de l'utiliser dans le bloc using. je peux direvar session équivaut à sessionFactory.OpenSession et je vais vouloir le faire dans le cadre de sa transaction.

Une fois la session ouverte, nous pouvons dire à la session de commencer une nouvelle transaction et nous pouvons ensuite effectuer une logique ici. Exécutez donc une logique de base de données et validez finalement cette transaction.