NHibernate的基本使用、快速入門 – Microsoft.NET開發架構應用資源(zhuan)

來源:互聯網
上載者:User

第一步:
我們需要NHibernate的程式集:
NHibernate.dll
Log4net.dll
Iesi.Collections.dll
Castle.DynamicProxy.dll
至少四個,其中

NHibernate.dll是核心的程式集,

Log4net.dll是日誌記錄程式集,

Iesi.Collections.dll是集合架構的程式集,

Castle.DynameicProxy.dll控制反轉的程式集

注意:需要同時拷貝4個dll,否則出現類似如下錯誤:未能負載檔案或程式集“Iesi.Collections, Version=1.0.0.3, Culture=neutral”或它的某一個依賴項。為什麼需要載入Iesi?為什麼需要載入log4net?

第二步:
準備持久化類、實體類,它是O/R Mapping的映射對象,通過控制它來封裝我們的資料

第三步:
使用NHibernate的設定檔
在設定檔中指定資料庫的方式,串連資料庫的方式
讓NHibernate知道如何去使用串連資料庫

第四步:
編寫O/R Mapping的對應檔
讓NHibernate知道如何去映射.NET與資料庫之間的關係

最後使用強大的NHibernate來編寫你的程式!
為了讓NHibernate知道如何去串連資料庫,所以你必須在我們.NET中的app.config或者web.config中去配置一下:

<configSections> <!--配置節-->
<section name="nhibernate"
type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>

<!-- 配置資訊用於指定NH以何種方式訪問資料庫-->
  <nhibernate>
     <!--串連提供者,取值必須是實現了IConnectionProvider介面的類的全名-->
    <add key="hibernate.connection.provider"
         value="NHibernate.Connection.DriverConnectionProvider" />
     <!--資料庫方言,取值必須是繼承之Dialect的類的全名-->
    <add key="hibernate.dialect"
         value="NHibernate.Dialect.MsSql2000Dialect" />
     <!--資料驅動類,取值必須是實現了IDriver介面的類的全名-->
    <add key="hibernate.connection.driver_class"
         value="NHibernate.Driver.SqlClientDriver" />
     <!--連接字串,取值要與driver_class指定的資料驅動類對應.-->
    <add key="hibernate.connection.connection_string"
         value="server=(local);uid=sa;pwd=sa;database=dbtest" />
</nhibernate>

製作一個持久化的類:

public class Account //注意必須將屬性設定為virtual虛擬
    {
        private int id;

        virtual public int Id
        {
get { return id; }
set { id = value; }
        }
        private string username;

        virtual public string Username
        {
get { return username; }
set { username = value; }

 

}
        private string password;

        virtual public string Password
        {
get { return password; }
set { password = value; }
        }
    }

編寫每個持久化類的配置
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name=“BE.Account,BE" table="account">
    <id name="Id" column="userid" type="Int32">
      <generator class="identity" />
    </id>
    <property name="Username" type="String" length="50"/>
    <property name="Password" type="String" length="50"/>
  </class>
</hibernate-mapping>

其中xmlns指定了使用NHibernate的版本,
class元素的name屬性指定了持久化類的全名稱,逗號隔開的是程式集的名稱
table屬性指定了對應的資料庫中表名稱
id元素是指定主鍵列名,name屬性是指持久化類的屬性名稱,column是表中列名
property元素是其他的每一列與持久化類的哪個屬性對應
generator元素 中的class屬性指定了是自動成長列

儲存為Account.hbm.xml檔案

下面開始使用NHibernate

using NHibernate;
using NHibernate.Cfg;

Configuration cfg = new Configuration();
cfg.AddAssembly(“BE");
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();
Account a = new Account();
a.Username = “Guilee";
a.Password = "1234";
a.Id = 1;
session.Save(a);
//修改資料庫的內容
//session.Update(a);
//刪除資料庫的內容
//session.Delete(a);
transaction.Commit();
session.Close();
首先,建立一個Configuration對象
Configuration對象能夠解析所有.Net對象和後台資料庫中的映射關係。
Configuration cfg = new Configuration();
cfg.AddAssembly(“BE");
Configuration對象會搜尋裝配件裡的任何以hbm.xml 結尾的檔案。還有其他方法載入對應檔,但這種方式是最簡單的。
建立一個Session對象
ISession對象提供一個到後台資料庫的串連,ITransaction對象提供一個可以被NHibernate管理的事務。
ISessionFactory factory = cfg.BuildSessionFactory(); ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();
接著來增/刪/改/查你的對象
現在你可以用使用傳統的.Net方法來操縱對象。
NHibernate將查詢的方式變成了物件導向的方法,針對查詢最簡單的使用方式是:
ICriteria c = session.CreateCriteria(typeof(BEAccount));
c.Add(Expression.Eq("Username",account.Username));
c.Add(Expression.Eq("Password",account.Password));
IList list = c.List();
使用ICriteria 表示一次查詢動作
整個代碼錶示:
查詢Account表,找到username為account.Username並且password為account.Password的所有記錄
使用List來得到所有查詢之後的結果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.