We allready discussed the key interfaces for creating nhibernate asp.net application in http://aspdotnetcodesonline.com/asp-net/creatingdevelopingperforming-crud-operations-using-nhibernate-c-asp-net-linq-or-mapper-1/
Open file and create a new console application and named it NHibernate1,
In this demonstartion,i am going to access a database table and performing all the CRUD operation,Here i used the 3 main emp table columns are FirstName,
DeptName,Manager.
In main.cs,
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Cfg.ConfigurationSchema;
using System.Data.SqlClient;
namespace NHibernate1
{
public class Emp
{
virtual public int id { get; set; }
virtual public string FirstName { get; set; }
virtual public string DeptName { get; set; }
virtual public string Manager { get; set; }
virtual public string DisplayEmp()
{
return "FirstName: '" + FirstName + "' Department Name: " + DeptName + " Manager: " + Manager + ".";
}
}
public class Program
{
private static void Main()
{
Emp James = new Emp { FirstName = "James", DeptName = "Cat", Manager = "Peter" };
Console.WriteLine(James.DisplayEmp());
//let's save James to the database
try
{
using (ISession session = OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(James);
transaction.Commit();
}
Console.WriteLine("Saved James to the database");
}
}
catch (Exception e) { Console.WriteLine(e); }
//let's read all the Emps in the database
using (ISession session = OpenSession())
{
IQuery query = session.CreateQuery("FROM Emp");
IList<Emp> Emps = query.List<Emp>();
Console.Out.WriteLine("Emps.Count = " + Emps.Count);
Emps.ToList().ForEach(p => Console.WriteLine(p.DisplayEmp()));
}
//let's update our Emp in the database
using (ISession session = OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
IQuery query = session.CreateQuery("FROM Emp WHERE FirstName = 'James'");
Emp Emp = query.List<Emp>()[0];
Emp.FirstName = "Jerold";
transaction.Commit();
}
}
//let's read all the Emps in the database (again)
using (ISession session = OpenSession())
{
IQuery query = session.CreateQuery("FROM Emp");
IList<Emp> Emps = query.List<Emp>();
Console.Out.WriteLine("Emps.Count = " + Emps.Count);
Emps.ToList().ForEach(p => Console.WriteLine(p.DisplayEmp()));
}
//let's delete our Emp from the database
using (ISession session = OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
IQuery query = session.CreateQuery("FROM Emp WHERE FirstName = 'Jerold'");
Emp Emp = query.List<Emp>()[0];
session.Delete(Emp);
transaction.Commit();
}
}
}
static ISessionFactory SessionFactory;
static ISession OpenSession()
{
if (SessionFactory == null) //not threadsafe
{ //SessionFactories are expensive, create only once
Configuration configuration = new Configuration();
configuration.AddAssembly(Assembly.GetCallingAssembly());
SessionFactory = configuration.BuildSessionFactory();
}
return SessionFactory.OpenSession();
}
}
}
using System; using System.Collections.Generic; using System.Reflection; using System.Linq; using NHibernate; using NHibernate.Cfg; using NHibernate.Cfg.ConfigurationSchema; using System.Data.SqlClient; namespace NHibernate1 { public class Emp { virtual public int id { get; set; } virtual public string FirstName { get; set; } virtual public string DeptName { get; set; } virtual public string Manager { get; set; } virtual public string DisplayEmp() { return "FirstName: '" + FirstName + "' Department Name: " + DeptName + " Manager: " + Manager + "."; } } public class Program { private static void Main() { Emp James = new Emp { FirstName = "James", DeptName = "Cat", Manager = "Peter" }; Console.WriteLine(James.DisplayEmp()); //let's save James to the database try { using (ISession session = OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.Save(James); transaction.Commit(); } Console.WriteLine("Saved James to the database"); } } catch (Exception e) { Console.WriteLine(e); } //let's read all the Emps in the database using (ISession session = OpenSession()) { IQuery query = session.CreateQuery("FROM Emp"); IList<Emp> Emps = query.List<Emp>(); Console.Out.WriteLine("Emps.Count = " + Emps.Count); Emps.ToList().ForEach(p => Console.WriteLine(p.DisplayEmp())); } //let's update our Emp in the database using (ISession session = OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { IQuery query = session.CreateQuery("FROM Emp WHERE FirstName = 'James'"); Emp Emp = query.List<Emp>()[0]; Emp.FirstName = "Jerold"; transaction.Commit(); } } //let's read all the Emps in the database (again) using (ISession session = OpenSession()) { IQuery query = session.CreateQuery("FROM Emp"); IList<Emp> Emps = query.List<Emp>(); Console.Out.WriteLine("Emps.Count = " + Emps.Count); Emps.ToList().ForEach(p => Console.WriteLine(p.DisplayEmp())); } //let's delete our Emp from the database using (ISession session = OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { IQuery query = session.CreateQuery("FROM Emp WHERE FirstName = 'Jerold'"); Emp Emp = query.List<Emp>()[0]; session.Delete(Emp); transaction.Commit(); } } } static ISessionFactory SessionFactory; static ISession OpenSession() { if (SessionFactory == null) //not threadsafe { //SessionFactories are expensive, create only once Configuration configuration = new Configuration(); configuration.AddAssembly(Assembly.GetCallingAssembly()); SessionFactory = configuration.BuildSessionFactory(); } return SessionFactory.OpenSession(); } } } |
VISIT MAIN ARTICLE,