http://www.codeproject.com/Articles/26466/Dependency-Injection-using-Spring-NET
http://stackoverflow.com/questions/29767825/spring-netnhibernate-configuration
http://nhbusinessobj.sourceforge.net/index.html
http://code.google.com/p/genericrepository/
sql:
CREATE TABLE [dbo].[Customers](
[customer_id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[name] [nvarchar](75) NULL,
[email] [nvarchar](95) NULL,
[contact_person] [nvarchar](75) NULL,
[postal_address] [nvarchar](150) NULL,
[physical_address] [nvarchar](150) NULL,
[contact_number] [nvarchar](50) NULL,
CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED
(
[customer_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
INSERT INTO [dbo].[Customers]
([name]
,[email]
,[contact_person]
,[postal_address]
,[physical_address]
,[contact_number])
VALUES
('Kode Blog'
,'a-team@kode-blog.com'
,'Rodrick Kazembe'
,'Private Bag WWW'
,'Tanzania'
,'911')
INSERT INTO [dbo].[Customers]
([name]
,[email]
,[contact_person]
,[postal_address]
,[physical_address]
,[contact_number])
VALUES
('Google Inc'
,'info@google.com'
,''
,''
,'USA'
,'')
GO
/// <summary>
///
/// </summary>
public class Customers
{
public virtual int customer_id { get; protected set; }
public virtual string name { get; set; }
public virtual string email { get; set; }
public virtual string contact_person { get; set; }
public virtual string postal_address { get; set; }
public virtual string physical_address { get; set; }
public virtual string contact_number { get; set; }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentNHibernate.Mapping;
namespace CodeBlogdeom
{
/// <summary>
///
/// </summary>
class CustomersMap : ClassMap<Customers>
{
/// <summary>
///
/// </summary>
public CustomersMap()
{
Id(x => x.customer_id);
Map(x => x.name);
Map(x => x.email);
Map(x => x.contact_person);
Map(x => x.postal_address);
Map(x => x.physical_address);
Map(x => x.contact_number);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;
using NHibernate.Persister;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Cfg;
//http://www.kode-blog.com/2014/04/fluent-nhibernate-tutorial-c-windows-crud-example/
namespace CodeBlogdeom
{
/// <summary>
///
/// </summary>
public partial class frmCustomers : Form
{
#region declarations
ISessionFactory sessionFactory;
#endregion
#region methods
private void load_records(string sFilter = "")
{
try
{
sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
string h_stmt = "FROM Customers";
if (sFilter != "")
{
h_stmt += " WHERE " + sFilter;
}
IQuery query = session.CreateQuery(h_stmt);
IList<Customers> customersList = query.List<Customers>();
dgvListCustomers.DataSource = customersList;
lblStatistics.Text = "Total records returned: " + customersList.Count;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private static ISessionFactory CreateSessionFactory()
{
ISessionFactory isessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(@"Server=GEOVINDU-PC\GEOVIN; Database=NHibernateSimpleDemo; Integrated Security=SSPI;"))
.Mappings(m => m
.FluentMappings.AddFromAssemblyOf<frmCustomers>())
.BuildSessionFactory();
return isessionFactory;
}
/// <summary>
///
/// </summary>
/// <param name="customer_id"></param>
private void load_customer_details(int customer_id)
{
using (ISession session = sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
IQuery query = session.CreateQuery("FROM Customers WHERE customer_id = " + customer_id);
Customers customer = query.List<Customers>()[0];
txtCustomerId.Text = customer.customer_id.ToString();
txtName.Text = customer.name;
txtEmail.Text = customer.email;
txtContactPerson.Text = customer.contact_person;
txtContactNumber.Text = customer.contact_number;
txtPostalAddress.Text = customer.postal_address;
txtPhysicalAddress.Text = customer.physical_address;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception Msg");
}
}
}
}
#endregion
/// <summary>
///
/// </summary>
public frmCustomers()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
load_records();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClose_Click(object sender, EventArgs e)
{
Close();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnFilter_Click(object sender, EventArgs e)
{
string sFilterValue = string.Empty;
string sField = cboFilter.Text;
string sCriteria = cboCriteria.Text;
string sValue = txtValue.Text;
switch (sCriteria)
{
case "Equals":
sFilterValue = sField + " = '" + sValue + "'";
break;
case "Begins with":
sFilterValue = sField + " LIKE '" + sValue + "%'";
break;
case "Contains":
sFilterValue = sField + " LIKE '%" + sValue + "%'";
break;
case "Ends with":
sFilterValue = sField + " LIKE '%" + sValue + "'";
break;
}
//data.Add(sFilterValue, sValue);
load_records(sFilterValue);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgvListCustomers_Click(object sender, EventArgs e)
{
int customer_id = 0;
customer_id = int.Parse(dgvListCustomers.CurrentRow.Cells[0].Value.ToString());
load_customer_details(customer_id);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAddNew_Click(object sender, EventArgs e)
{
//data validation
if (txtName.Text == "")
{
MessageBox.Show("The name field is required", "Null name", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtEmail.Text == "")
{
MessageBox.Show("The email field is required", "Null email", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtPhysicalAddress.Text == "")
{
MessageBox.Show("The physical address field is required", "Null physical address", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Customers customer = new Customers();
customer.name = txtName.Text;
customer.email = txtEmail.Text;
customer.contact_person = txtContactPerson.Text;
customer.contact_number = txtContactNumber.Text;
customer.physical_address = txtPhysicalAddress.Text;
customer.postal_address = txtPostalAddress.Text;
using (var session = sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
session.Save(customer);
transaction.Commit();
load_records();
}
catch (Exception ex)
{
transaction.Rollback();
MessageBox.Show(ex.Message, "Exception Msg");
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRefresh_Click(object sender, EventArgs e)
{
load_records();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnUpdate_Click(object sender, EventArgs e)
{
//data validation
if (txtName.Text == "")
{
MessageBox.Show("The name field is required", "Null name", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtEmail.Text == "")
{
MessageBox.Show("The email field is required", "Null email", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (txtPhysicalAddress.Text == "")
{
MessageBox.Show("The physical address field is required", "Null physical address", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
using (var session = sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
IQuery query = session.CreateQuery("FROM Customers WHERE customer_id = '" + txtCustomerId.Text + "'");
Customers customer = query.List<Customers>()[0];
customer.name = txtName.Text;
customer.email = txtEmail.Text;
customer.contact_person = txtContactPerson.Text;
customer.contact_number = txtContactNumber.Text;
customer.physical_address = txtPhysicalAddress.Text;
customer.postal_address = txtPostalAddress.Text;
session.Update(customer);
transaction.Commit();
load_records();
}
catch (Exception ex)
{
transaction.Rollback();
MessageBox.Show(ex.Message, "Exception Msg");
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDelete_Click(object sender, EventArgs e)
{
using (ISession session = sessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
IQuery query = session.CreateQuery("FROM Customers WHERE customer_id = '" + txtCustomerId.Text + "'");
Customers customer = query.List<Customers>()[0];
session.Delete(customer); //delete the record
transaction.Commit(); //commit it
btnRefresh_Click(sender, e);
}
catch (Exception ex)
{
transaction.Rollback();
MessageBox.Show(ex.Message, "Exception Msg");
}
}
}
}
}
}