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' ,'[email protected]' ,'Rodrick Kazembe' ,'Private Bag WWW' ,'Tanzania' ,'911') INSERT INTO [dbo].[Customers] ([name] ,[email] ,[contact_person] ,[postal_address] ,[physical_address] ,[contact_number]) VALUES ('Google Inc' ,'[email protected]' ,'' ,'' ,'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"); } } } } } }