NHibernate - Introducción

En este capítulo, veremos cómo comenzar con un ejemplo simple usando NHibernate. Estaremos construyendo unsimple console application. Para crear una aplicación de consola, usaremos Visual Studio 2015, que contiene todas las características que necesita para crear, pruebe su aplicación usando el paquete NHibernate.

A continuación se muestran los pasos para crear un proyecto con las plantillas de proyecto disponibles en Visual Studio.

Step 1 - Abra Visual Studio y haga clic en Archivo → Nuevo → Opción de menú Proyecto.

Step 2 - Se abre un nuevo cuadro de diálogo Proyecto.

Step 3 - Desde el panel izquierdo, seleccione Plantillas → Visual C # → Windows.

Step 4 - En el panel central, seleccione Aplicación de consola.

Step 5 - Ingrese el nombre del proyecto, 'NHibernateDemoApp', en el campo Nombre y haga clic en Aceptar para continuar.

Step 6 - Una vez que Visual Studio crea el proyecto, verá varios archivos en la ventana del Explorador de soluciones.

Como sabe que hemos creado un proyecto de aplicación de consola simple, ahora necesitamos incluir el paquete NHibernate en nuestro proyecto de consola.

Vaya al menú Herramientas y seleccione NuGet Package Manager → Package Manager Console, se abrirá la ventana Package Manager Console.

Especifique el comando que se muestra arriba Package Manager Consoley presione enter, descargará todas las dependencias de NHibernate y creará referencias a todos los ensamblados requeridos. Una vez finalizada la instalación, verá el mensaje como se muestra en la siguiente imagen.

Ahora que hemos agregado NHibernate, ahora podemos comenzar la implementación. Entonces, vamos a comenzar mapeando un muy simpletable llamado Student, que simplemente tiene una clave primaria entera llamada ID y una columna de Nombre y Apellido.

Necesitamos una clase para representar a este estudiante, así que creemos una nueva clase llamada Estudiante haciendo clic derecho en el proyecto en el explorador de soluciones y luego seleccione Agregar → Clase que abrirá el cuadro de diálogo Agregar nuevo elemento.

Entrar Student.csen el campo de nombre, haga clic en el botón Agregar. En esta clase de Estudiante, necesitamos tener nuestra clave primaria entera llamada ID, y necesitamos crear esta cadena,FirstName y LastName campos como se muestra en la siguiente implementación completa de la clase 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; } 
   } 
}

Cuando se trata de modelos en la aplicación NHibernate, es más fácil hacer que todos sus campos sean virtuales. Así que este es nuestro modelo NHibernate simple que usaremos y lo mapearemos a la base de datos back-end.

Ahora vayamos al método Main en la clase Program y creemos un nuevo objeto de configuración NHibernate.

Lo primero que debemos proporcionar es la connection string. Esta es una cadena de conexión específica de la base de datos y la forma más fácil de encontrar la cadena de conexión es haciendo clic derecho en la base de datos enSQL Server Object Explorer y seleccione Propiedades.

Se abrirá la ventana Propiedades, ahora desplácese hacia abajo y verá el campo Cadena de conexión en la ventana Propiedades.

Copie la cadena de conexión y especifique en su código. A continuación se muestra la implementación del método Main en el que necesitamos configuración para 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(); 
         } 
      } 
   } 
}

Después de la cadena de conexión, necesitamos proporcionar un controlador, que es el SQLClientDriver y luego también debemos proporcionarle un dialecto, qué versión de SQL Server, y vamos a usar MS SQL 2008.

NHibernate ahora sabe cómo conectarse a la base de datos. La otra cosa que debemos hacer es proporcionarle una lista de modelos que mapearemos.

Podemos hacer esto agregando un ensamblaje, por lo que especificando el Assembly.GetExecutingAssemblyy aquí es donde el programa encontrará archivos de mapeo. Los archivos de mapeo le dicen a NHibernate cómo pasar de las clases C # a las tablas de la base de datos.

SessionFactory compila todos los metadatos necesarios para inicializar NHibernate. SessionFactory se puede utilizar para crear sesiones, que son aproximadamente análogas a las conexiones de bases de datos. Entonces, la forma adecuada es usarlo en el bloque using. puedo decirvar session igual sessionFactory.OpenSession y voy a querer hacer esto dentro de su transacción.

Una vez que se abre la sesión, podemos decirle a la sesión que comience una nueva transacción y luego podemos realizar algo de lógica aquí. Así que realice alguna lógica de base de datos y finalmente confirme esa transacción.