NHibernate - Primeiros passos

Neste capítulo, veremos como iniciar um exemplo simples usando NHibernate. Estaremos construindo umsimple console application. Para criar um aplicativo de console, usaremos o Visual Studio 2015, que contém todos os recursos que você precisa para criar, testar seu aplicativo usando o pacote NHibernate.

A seguir estão as etapas para criar um projeto usando os modelos de projeto disponíveis no Visual Studio.

Step 1 - Abra o Visual Studio e clique em Arquivo → Novo → opção de menu Projeto.

Step 2 - Uma nova caixa de diálogo Projeto é aberta.

Step 3 - No painel esquerdo, selecione Modelos → Visual C # → Windows.

Step 4 - No painel do meio, selecione Aplicativo de console.

Step 5 - Digite o nome do projeto, 'NHibernateDemoApp', no campo Nome e clique em Ok para continuar.

Step 6 - Depois que o projeto for criado pelo Visual Studio, você verá vários arquivos exibidos na janela do Solution Explorer.

Como você sabe que criamos um projeto de aplicativo de console simples, agora precisamos incluir o pacote NHibernate em nosso projeto de console.

Vá para o menu Ferramentas e selecione Gerenciador de pacotes NuGet → Console do gerenciador de pacotes para abrir a janela Console do gerenciador de pacotes.

Especifique o comando mostrado acima Package Manager Consolejanela e pressione Enter, ele irá baixar todas as dependências do NHibernate e criar referências para todos os assemblies necessários. Assim que a instalação for concluída, você verá a mensagem conforme mostrado na imagem a seguir.

Agora que temos o NHibernate adicionado, podemos agora iniciar a implementação. Então, vamos começar mapeando um muito simplestable chamado Student, que simplesmente tem uma chave primária inteira chamada ID e uma coluna FirstName e LastName.

Precisamos de uma classe para representar este aluno, então vamos criar uma nova classe chamada Aluno clicando com o botão direito do mouse no projeto no explorador de soluções e então selecione Adicionar → Classe que abrirá a caixa de diálogo Adicionar Novo Item.

Entrar Student.csno campo do nome, clique no botão Adicionar. Nesta classe de aluno, precisamos ter nossa chave primária inteira chamada ID, e precisamos criar esta string,FirstName e LastName campos conforme mostrado na seguinte implementação completa da classe Aluno.

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; } 
   } 
}

Ao lidar com modelos no aplicativo NHibernate, é mais fácil tornar todos os seus campos virtuais. Portanto, este é nosso modelo NHibernate simples que usaremos e mapearemos para o banco de dados de back end.

Agora vamos para o método Main na classe Program e criar um novo objeto de configuração NHibernate.

A primeira coisa que precisamos fornecer é o connection string. Esta é uma string de conexão específica do banco de dados e a maneira mais fácil de encontrar a string de conexão é clicando com o botão direito do mouse no banco de dados emSQL Server Object Explorer e selecione Propriedades.

Isso abrirá a janela Propriedades, agora role para baixo e você verá o campo String de conexão na janela Propriedades.

Copie a string de conexão e especifique em seu código. A seguir está a implementação do método Main em que precisamos de configuração 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(); 
         } 
      } 
   } 
}

Após a string de conexão, precisamos fornecer um driver, que é o SQLClientDriver e também precisamos fornecer um dialeto, qual versão do SQL Server, e usaremos o MS SQL 2008.

NHibernate agora sabe como se conectar ao banco de dados. A outra coisa que precisamos fazer é fornecer uma lista de modelos que iremos mapear.

Podemos fazer isso adicionando uma montagem, portanto, especificando o Assembly.GetExecutingAssemblye é aqui que o programa encontrará os arquivos de mapeamento. Arquivos de mapeamento informam ao NHibernate como ir das classes C # para as tabelas do banco de dados.

SessionFactory compila todos os metadados necessários para inicializar o NHibernate. SessionFactory pode ser usada para construir sessões, que são aproximadamente análogas às conexões de banco de dados. Portanto, a maneira adequada é usá-lo no bloco de uso. eu posso dizervar session é igual a sessionFactory.OpenSession e vou querer fazer isso dentro de sua transação.

Assim que a sessão for aberta, podemos dizer à sessão para iniciar uma nova transação e, então, executar alguma lógica aqui. Portanto, execute alguma lógica de banco de dados e, finalmente, confirme essa transação.