1. 程式人生 > >Nhibernate第一次做的Demo

Nhibernate第一次做的Demo

Nhibernate簡單 例子

1.建立web應用程式NHibernate.Demo.QuickStart和一個類庫專案NHibernate.Demo.QuickStartClassLib


2.引程式集

3..建立資料庫,資料表

USE [dbNHibernateDemo]

GO

/****** Object:  Table [dbo].[Hksj_User]    Script Date: 11/01/2013 11:35:02 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Hksj_User](

[Id] [int] IDENTITY(1,1) NOT NULL,

[SName] [nvarchar](20) NOT NULL,

[SNickName] [nvarchar](20) NULL,

[SPassWord] [nvarchar](30) NOT NULL,

[DCreateDate] [datetime] NULL,

[SCreator] [nvarchar](20) NULL,

[SEmail] [nvarchar](50) NULL,

[SPhone] [nvarchar](50) NULL,

[SIdentifyId] [nvarchar](30) NULL,

[DLastTimeLogOn] [datetime] NULL,

PRIMARY KEY CLUSTERED 

(

[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

3.設計User類。程式碼如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace NHibernate.Demo.QuickStartClassLib

{

    public class User

    {

        #region 屬性,欄位定義

        /// <summary>

        /// 使用者id

        /// </summary>

        public Int32 Id

        {

            get;

            set;

        }

        /// <summary>

        /// 使用者名稱,登入所用的名字

        /// </summary>

        public string Name

        {

            get;

            set;

        }

        /// <summary>

        /// 真實姓名

        /// </summary>

        public string NickName

        {

            get;

            set;

        }

        /// <summary>

        /// 密碼

        /// </summary>

        public string PassWord

        {

            get;

            set;

        }

        /// <summary>

        /// 建立日期

        /// </summary>

        public DateTime CreateTime

        {

            get;

            set;

        }

        /// <summary>

        /// 建立人

        /// </summary>

        public string Creator

        {

            get;

            set;

        }

        /// <summary>

        /// Email

        /// </summary>

        public string Email

        {

            get;

            set;

        }

        /// <summary>

        /// 聯絡電話

        /// </summary>

        public string Phone

        {

            get;

            set;

        }

        /// <summary>

        /// 身份證

        /// </summary>

        public string IdentifyId

        {

            get;

            set;

        }

        /// <summary>

        /// 最後一次登入時間

        /// </summary>

        public DateTime LastTimeLogOn

        {

            get;

            set;

        }

        #endregion

    }

}

4.建立User類的對映檔案 命名規則:User.hbm.xml  程式碼如下:

<?xml version="1.0" encoding="utf-8" ?>

  <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="NHibernate.Demo.QuickStartClassLib.User,NHibernate.Demo.QuickStartClassLib" table="Hksj_User" lazy="false">

<id name="Id" column="Id" type="Int32">

<generator class="native"/>

</id>

<property name="Name" column="SName" type="String" length="20" />

<property name="NickName" column="SNickName" type="String" length="20" />

<property name="PassWord" column="SPassWord" type="String" length="30" />

<property name="IdentifyId" column="SIdentifyId" type="String" length="30" />

<property name="Phone" column="SPhone" type="String" length="50" />

<property name="Email" column="SEmail" type="String" length="50" />

<property name="CreateTime" column="DCreateDate" type="DateTime" />

<property name="Creator" column="SCreator" type="String" length="20" />

<property name="LastTimeLogOn" column="DLastTimeLogOn" type="DateTime" />

</class>

</hibernate-mapping>

5.建立Nhibernate的配置檔案:Nhibernate.cfg.xml   程式碼如下: 

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >

<session-factory>

<!-- properties -->

<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>

<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>

<property name="connection.connection_string">Data Source=DAN-PC\;Initial Catalog=dbNHibernateDemo;Integrated Security=True;</property>

<property name="dialect">NHibernate.Dialect.MySQLDialect</property>

<property name="show_sql">true </property>

<property name="use_outer_join">true</property>

<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>

<!-- 代理工廠,可以試用Castle,也可以試用LinFu -->

<!-- <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>-->

<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>

<!-- mapping files 領域物件對映檔案所在程式集 -->

<mapping assembly="NHibernate.Demo.QuickStart"/>

</session-factory>

</hibernate-configuration>

解釋:

<property name="connection.connection_string">資料庫連線字串

<property name="dialect">NHibernate.Dialect.MySQLDialect</property>  資料庫型別。我用的sql server 2008R2

<mapping assembly="NHibernate.Demo.QuickStart"/>節點是web應用程式所在程式集 。

6.User.hbm.xml屬性修改

7.Nhibernate.cfg.xml屬性修改

8.到此Nhibernate所有準備工作已完成。可以寫具體的CRUD程式碼。(這裡我只增加一條資料,查詢特定使用者並在GridView上簡單展示)

後臺程式碼如下:

namespace NHibernate.Demo.QuickStart

{

    public partial class _Default : System.Web.UI.Page

    {

        public IList<User> cUsers = null;

        protected void Page_Load(object sender, EventArgs e)

        {

            NHibernate.Cfg.Configuration cfg=new NHibernate.Cfg.Configuration();//Configuration物件知道所有在.net類和後端資料庫之間的對映關係

            string path = Server.MapPath("~") + "Nhibernate.cfg.xml";

            cfg.Configure(path);//Could not compile the mapping document: NHibernate.Demo.QuickStart.User.hbm.xml   

           //Could not load type NHibernate.Dialect.MsSql2008Dialect. Possible cause: no assembly name specified.  

            //改為  <property name="dialect">NHibernate.Dialect.MySQLDialect</property>   即可

            ISessionFactory sessionFactory = cfg.BuildSessionFactory();//建立Session工廠

            ISession session = sessionFactory.OpenSession();//開啟session

            NHibernate.Demo.QuickStartClassLib.User user = new NHibernate.Demo.QuickStartClassLib.User { IdentifyId = "009", Email = "[email protected]", CreateTime = DateTime.Now, LastTimeLogOn = DateTime.Now, Name = "dan", NickName = "dandan", PassWord = "123", Phone = "nihao" };

            session.Save(user);

            session.Flush();

            IList<User> users = null;

            IQuery query = session.CreateQuery("from User u where u.Id>=:id");

            query.SetInt32("id", 2);

            users = query.List<User>();

            cUsers = users;

            gvData.DataSource = cUsers;

            gvData.DataBind();

        }

    }

}

9.可參考資料:


相關推薦

Nhibernate第一Demo

Nhibernate簡單 例子 1.建立web應用程式NHibernate.Demo.QuickStart和一個類庫專案NHibernate.Demo.QuickStartClassLib 2.引程式集 3..建立資料庫,資料表 USE [dbN

第一的破網頁

郵件 com fct bsp nbsp 做的 來源 一次 ctp http://url.cn/5bQrYmI , 密碼:my19da; http://url.cn/5hAFctp ,密碼:my19da; 一個為修改後的,一個為未修改的, 若果 有人引用請註明來源; 還有

第一Andriod移動開發 的一些總結

1.先說說SQlite 吧,如何實現同一應用的多個活動介面訪問資料庫的問題 再談一談自己遇到的一些問題吧: 2.SQlite資料庫我沒有弄視覺化的那一部分,相當於盲“點”。 如何保證知道自己成功的建立了資料庫呢?   Log.i()//寫在資料庫的建立函式中即可 相同的方法保證

php微信支付(僅Jsapi支付)詳細步驟.----僅適合第一微信開發的程式設計師

本人最近做了微信支付開發,是第一次接觸.其中走了很多彎路,遇到的問題也很多.為了讓和我一樣的新人不再遇到類似的問題,我把我的開發步驟和問題寫出來,以供參考. 開發時間是2016/8/2,所以微信支付的版本也是對應此時的版本. 一.前期準備: 首先你們公司開通微信支付功能後

第一APP介面開發過程總結

關於平湖人社APP後臺開發總結 這是我第一次做聯合開發,對於多部門多人員合作開發專案我這個才畢業沒多久的新人菜鳥還是有很多挑戰與困難的,不過只有在實際專案開發中才能學到東西.話不多說,我們直奔主題.(忽略我使用英文標點符號,開發不易啊…)

人生中第一面試官的經歷與總結

      相信對於每一個求職者來說都有被面試的經歷吧,曾經作為一位java小白的我,每一次面試過後都會各種吐槽面試官的不是,吐槽HR人事的不足,以及自己的有點沒有發揮出來,今天我終於體會了一次面試官的心情............       起因:由於公司的發展,需要招聘

第一程式設計的一些感想

  這幾個月是我自己第一次自己編寫文件,自己編寫程式.剛開始覺得很新奇,因為我能像寫小說的讀者一樣自己創造一個屬於自己的邏輯世界.但是過了一些時間,心中確越不越鬱悶.碰到問題想找個人討論都很難,到網上問吧,人家都很忙,又不好意思打擾人家,這兩天看到一個詞,叫痛與快樂並存著,我

第一貼片封裝的PCB,自己的一些經驗教訓

三:本次由於是手工製版,條件有限沒有阻焊層、阻焊油,但是在Lay板子的時候,敷銅和引線的間距過於小(手工操作、焊接來說過小),造成焊接過程中融化的焊錫不慎將某些導線短路。本次製版導致了通道1的輸出和GND之間的短路,通道二負電源和GND之間短路。解決方法:增加規則中的敷銅最小間距,使用阻焊藍油。

第一 blog 我叫heylon

今天是國慶節,祝大家國慶愉快!   先做下自我介紹  ,本人今年18歲,呵呵,高3 ,學習成績不是很好,不過很喜歡計算機。初1開始學過VB,只是做過一些小的東西,並沒有什麼太成功的例子。之後學過ASP這樣的指令碼語言,今年開始我才學C語言,可能比較晚,但我會努力的,在這個月

記我第一培訓講師的那些事

突如其來的機會   (以下所有的截圖與內容都是經過當事人授權)   我在部落格園寫部落格,到今天為止有7個年頭了,雖然寫作頻率並不很頻繁,但的確有一定的跨度,與其找一些文章翻譯或者demo記錄來充數,我更新希望把自己的真實的實施問題與感悟給分享出來。   今年也是我寫作多年後,終於有實質回報的一年。   年初

什麽是第一把事情

錯誤 ron 分析 自己 避免 徹底 更多 重要 衡量 第一次把事情做對的含義 第一次把事情做對就是第一次把正確的事情做正確。 “做正確的事”是戰略和方向; “正確地的做事”是運行和執行; “第一次&rdq

為什麼MySQL查詢語句時,第一會很慢,但是第二,第三就會變快

為什麼MySQL做查詢語句時,第一次會很慢,但是第二次,第三次就會變快 為什麼MySQL的查詢事務第一次執行會很慢,第二次,第三次就會快很多呢? 在國外,有個老外這麼提問 Hi, I have an sql query which takes 8 seconds i

一個“有思想的插排”--第一燒錄程式

前一段時間有點事i,所以沒有更新文章,今天再更新兩篇,把下載部分更新完成。 第一次下載程式 燒錄軟體 上一篇介紹了韌體檔案的編譯生成,現在大家資料夾裡就會有一個編譯完成的檔案,共本次下載。 開啟ESPFlashDownloadTool_v3.6.4軟體,選擇ESP8266下載

第一在正式環境自動化部署操作

1.需要用到的軟體:jenkins,docker,docker-compose,maven 2.軟體搭建工作略過,直接說配置過程,這次涉及到的後端是java打成的jar包,前端vue打成的靜態檔案; 3.首先git clone前後端專案.git地址使用ssh 這樣可以保證每次自動構建的時

Tablayout+Viewpager+Frgment Viewapger的快取,並且第一點選tab都去重新整理,但是第二之後都有快取且不會自動重新整理可以主動重新整理。Fragment的重新整理

Tablayout+Viewpager+Frgment 做Viewapger的快取,並且第一次點選tab都去重新整理,但是第二次之後都有快取且不會自動重新整理可以主動重新整理。 需要實現這個首先你需要了解fragment的一個方法 @Override public voi

記錄我第一網線

今天成功做了一根的網線,並用它聯網來寫這篇部落格。                                   &nb

第一跟公司團隊專案的感受

  今天剛剛做完師傅給的第一個任務,寫js指令碼,計算各種公式。在這兩天裡面,學到了一些東西,不懂就要問,不會就要去查,不要等著知識會跑到你自己嘴裡。   做的這個小任務學到了:     1.運用方法的時候注意大小寫;js區分大小寫。     2.var num1=3.

吐槽以及總結(記第一去客戶專案,第一負責專案的經歷)

我最近近一個半月,忙的真的讓我迷茫了!專案實在是太變態了,客戶!呵呵,原定45天的開發時間硬生生被客戶反悔壓縮到21天預上線,造成這樣,就是因為甲方公司的領導的一句話。。。。連續上班30小時還不讓休息,每天11點之後下班,週末還經常加班的日子真的是日了狗了!!(...此處省略一千字) 我是前端負

Android自定義控制元件開發系列(一)——第一動手自定義控制元件

        Android系統提供的控制元件多種多樣,以至於很多初學者經常忘了還有這樣那樣的控制元件沒用過甚至沒聽過。儘管如此,但是系統控制元件大多比較死板,而且不夠美觀,很多多樣化的顯示或是互動

一個據說第一接觸都會錯的Java面試題和類載入器的介紹

首先什麼話都不說,先把這個很變態的面試題放上來,大家有情趣自己分析一下,然後再執行一下看看結果,據說第 一次遇到這個題目的Java程式設計師都是會做錯的。 [java] view plain copy  print? package com.bird.c