Basic NHibernate 5.2 configuration


Back to learning
Created: 11/10/2019

Basic NHibernate 5.2 configuration


Environment
--------------
Visual Studio 2019
NHibernate 5.2
Sql Server 2014


1) Database: I used only one simple table

USE [ProductosDB]
GO

/****** Object:  Table [dbo].[items]    Script Date: 11/10/2019 14:18:10 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[items](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
 CONSTRAINT [PK_items] PRIMARY KEY CLUSTERED 
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



2) items.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns = "urn:nhibernate-mapping-2.2"
   assembly = "ConsoleApp1" namespace = "ConsoleApp1">

  <class name = "items">
    <id name = "id">
      <generator class = "identity"/>
    </id>

    <property name = "name"/>
  </class>

</hibernate-mapping>

3) App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section
      name="hibernate-configuration"
      type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"
      />
  </configSections>
  <!--NHibernate Configuration (Adding Properties)-->

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
      <session-factory>
        <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
        <property name="connection.connection_string">
          Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ProductosDB;Data Source=XXXXX
        </property>

        <mapping assembly="ConsoleApp1" />
    </session-factory>
  </hibernate-configuration>
  
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />

    </startup>

  </configuration>

4) Console App

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

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

namespace ConsoleApp1
{
    public class items
    {
        public items()
        {

        }

        public virtual int id { get; set; }
        public virtual string name { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            
            NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
            cfg.AddAssembly("ConsoleApp1");

            ISessionFactory factory = cfg.BuildSessionFactory();
            ISession session = factory.OpenSession();
            ITransaction transaction = session.BeginTransaction();

            items i = new items()
            {
                name = "asdsaas"
            };

            
            session.Save(i);

            // commit all of the changes to the DB and close the ISession
            transaction.Commit();

            // Closing the session
            session.Close();

            Console.WriteLine("End");

            Console.ReadKey();
        }
    }
}


Thats all i have, and it works!