1. 下載相關資源:
2. 下載NHibernate后解壓縮文件,看到如下文檔結構。本示例會用到Required_Bins目錄下的文件。
3. 打開Visual Studio 2008。新建NHibernate.Sample解決方案。
4. 在新建的解決方案下創建如下新項目:
創建好以后,解決方案目錄如下:
5. NHibernate.Sample.Lib項目,用來統一存放本示例用到的所有外部資源。創建三個個文件夾,分別為Dll、Schema、DBScript;分別用來存放NHibernate相關Dll文件、Schema文件和示例用到的數據庫腳本文件。下面需要把相應的文件拷貝到對應的文件夾下?!具@一步可以做,也可以不做。一般在真實的項目都會做,方便統一管理】。
完成的NHibernate.Sample.Lib項目結構如下:
instnwnd.sql文件來自下, 載微軟Northwind示例數據庫。第一步已經提供了下載地址。Iesi.Collections.dll、NHibernate.dll、nhibernate-configuration.xsd、nhibernate-mapping.xsd四個文件都來自下載的NHibernate,Required_Bins文件目錄下。
6. NHibernate.Sample.Model項目,用來創建模型,對應于數據庫中的表。添加Customer類,添加Mapping文件夾。
<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernate.Sample.Model" namespace="NHibernate.Sample.Model"> <class name="Customer" table="Customers" lazy="true"> <id name="CustomerID" column="CustomerID" type="string"/> <PRoperty name="CompanyName" type="string"> <column name="CompanyName" length="40"/> </property> <property name="ContactName" type="string"> <column name="ContactName" length="30"/> </property> <property name="ContactTitle" type="string"> <column name="ContactTitle" length="30"/> </property> <property name="Address" type="string"> <column name="Address" length="60"/> </property> <property name="City" type="string"> <column name="City" length="15"/> </property> <property name="Region" type="string"> <column name="Region" length="15"/> </property> <property name="PostalCode" type="string"> <column name="PostalCode" length="10"/> </property> <property name="Country" type="string"> <column name="Country" length="15"/> </property> <property name="Phone" type="string"> <column name="Phone" length="24"/> </property> <property name="Fax" type="string"> <column name="Fax" length="24"/> </property> </class></hibernate-mapping>
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace NHibernate.Sample.Model{ public class Customer { /// <summary> /// /// </summary> public virtual string CustomerID { get; set; } /// <summary> /// /// </summary> public virtual string CompanyName { get; set; } /// <summary> /// /// </summary> public virtual string ContactName { get; set; } /// <summary> /// /// </summary> public virtual string ContactTitle { get; set; } /// <summary> /// /// </summary> public virtual string Address { get; set; } /// <summary> /// /// </summary> public virtual string City { get; set; } /// <summary> /// /// </summary> public virtual string Region { get; set; } /// <summary> /// /// </summary> public virtual string PostalCode { get; set; } /// <summary> /// /// </summary> public virtual string Country { get; set; } /// <summary> /// /// </summary> public virtual string Phone { get; set; } /// <summary> /// /// </summary> public virtual string Fax { get; set; } }}
7. NHibernate.Sample.Data項目,用來數據訪問。創建文件夾Config,用來存放配置文件,創建數據訪問基類,創建數據訪問接口,創建數據訪問類。
<?xml version="1.0" encoding="utf-8" ?><hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.connection_string_name">Connection String</property> <property name="connection.isolation">ReadCommitted</property> <property name="show_sql">false</property> <mapping assembly="NHibernate.Sample.Model"/> </session-factory></hibernate-configuration>
using System;using System.Collections.Generic;using System.Linq;using System.Text;using NHibernate;using NHibernate.Cfg;namespace NHibernate.Sample.Data{ public class BaseOperator { private ISession m_Session; public ISession Session { get { return m_Session;} } private ISessionFactory m_SessionFactory; public BaseOperator() { var config = new Configuration().Configure("Config/hibernate.cfg.xml"); m_SessionFactory = config.BuildSessionFactory(); m_Session = m_SessionFactory.OpenSession(); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using NHibernate.Linq;using NHibernate.Sample.Model;namespace NHibernate.Sample.Data{ public class CustomerOperator : BaseOperator { public object Save(Customer customer) { var id = Session.Save(customer); Session.Flush(); retur
新聞熱點
疑難解答