国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[轉]ASP.NET MVC Spring.NET NHibernate 整合

2019-11-17 01:53:03
字體:
來源:轉載
供稿:網友

[轉]asp.net MVC SPRing.NET NHibernate 整合

請注明轉載地址:http://m.survivalescaperooms.com/arhat

在整合這三個技術之前,首先得說明一下整合的步驟,俗話說汗要一口一口吃,事要一件一件做。同理這個三個技術也是。那么在整合之前,需要對ASP.NET,Spring.NET,NHibernate有所了解,最好是有一些經驗,因為平白無故的就把3個技術融合到一起,會鬧些小別扭,其實就像配置化學藥品一樣,如果3中原料有一點出路,那么整個實驗也就失敗了。

在網上有很多高人都寫過類似的文章,可能是鄙人不才,看了很多文章都沒有把我的問題解決了,同時我在整合的過程中走了不少的彎路。今天做一下記錄,防止自己忘掉。好了,言歸正傳。

整合原理:

我們在初中,高中都學過化學,知道有些物質是不能很好的反應,需要通過催化劑來促使兩者之間更改好的反應。那么我們就把ASP.NET MVC看成是物質A,NHibernate看成是物質C。本身A+C=應用。但是由于A和C之間結合會帶來開發上的一些難題(比如事務的控制),那么怎么辦呢,我們可以加入催化劑Spring.NET(物質B)。這樣通過B這個催化劑很好的解決了A+C之間的問題。于是公式就出來了A+B+C=應用。

當然,我們這里是程序設計而不是化學反應,所以在結合的過程中我們遵循下面的步驟。

1. ASP.NET MVC + Spring.NET

2. ASP.NET MVC + NHibernate

3. ASP.NET MVC + Spring.NET +NHibernate本章是ASP.NET,Spring.NET,NHibernate相結合的綜合篇章,看過前兩篇的朋友知道,前兩篇文章只是ASP.NET MVC 和 Spring.NET,ASP.NET MVC 和 NHibernate的單獨結合。本章是三者結合的最后一篇《 ASP.NET MVC + Spring.NET +NHibernate》。好了,開始本章的內容。本次使用的是Spring.NET 1.3.2,NHibernate3.2.0,ASP.NET MVC3。開發環境是VS2012

一、創建一個解決方案“ASH”在解決方案中創建4個項目:”Com.Symjie.Web””Com.Symjie.Model””Com.symjie.BLL””Com.Symjie.DAL”并添加他們之間的相互引用(三層知識,這里不再介紹)。如圖:wps_clip_image-28214并在每個項目中都添加一個“Config”文件夾,這個文件夾用來存放Spring.NET和NHibernate的配置文件。

二、從Model入手,配置NHibernate的映射文件這里我們使用“Entity Developer”這個軟件來生成NHibernate的映射文件,當然手動寫也可以。把生成的文件加入到Model項目中。如圖:

wps_clip_image-22399

然后把User.hbm.xml文件的屬性更改為“嵌入的資源”。如圖:

wps_clip_image-29493

User.cs代碼:

復制代碼復制代碼
using System;using System.Collections;using System.ComponentModel;using System.Linq;using System.Text;using System.Collections.Generic;namespace Com.Symjie.Model{    public partial class User {            partial void OnCreated();                public User()        {            OnCreated();        }        public virtual int Uid        {            get;            set;        }        public virtual string Uname        {            get;            set;        }    }}
復制代碼復制代碼

User.hbm.xml文件內容:

復制代碼復制代碼
<?xml version="1.0" encoding="utf-8"?><hibernate-mapping assembly="Com.Symjie.Model" namespace="Com.Symjie.Model" xmlns="urn:nhibernate-mapping-2.2">  <class name="User" table="user" schema="nhibernate">    <id name="Uid" type="Int32">      <column name="uid" not-null="true" precision="10" scale="0" sql-type="int" />      <generator class="identity" />    </id>    <property name="Uname" type="String">      <column name="uname" not-null="false" length="50" sql-type="varchar" />    </property>  </class></hibernate-mapping>
復制代碼復制代碼

三、從DAL入手,先讓Spring.NET 和 NHibernate相結合之所以從DAL入手,是因為Spring.NET 和 NHibernate結合比較復雜(對于剛接觸的朋友)。由于DAL是和數據庫打交道的,所以在DAL項目中,我們要引入以下的幾個DLL文件。NHibernate:NHibernnate.dllIesi.Collections.dll

Spring.NET暫時不引入,當然引入核心的dll文件也可以。如果后續課程用到,我們在加上去。

wps_clip_image-16208

創建三個文件分別為:INHibernatesessionFactory.cs提供對ISession的管理:

復制代碼復制代碼
public interface INHibernateSessionFactory{NHibernate.ISessionFactory SessionFactory { set; get; }}
復制代碼復制代碼

ID_User.cs 是一個對D_User的抽象接口,定義實現的方法

復制代碼復制代碼
public interface ID_User{IList<Model.User> GetAllUsers();    }
復制代碼復制代碼

D_User.cs 是具體的實現,要實現接口上面的兩個接口,充分體現Spring.NET的Ioc。

復制代碼復制代碼
public class D_User:ID_User,INHibernateSessionFactory{public NHibernate.ISessionFactory SessionFactory{get;set;}public IList<Model.User> GetAllUsers(){NHibernate.ISession session =  this.SessionFactory.GetCurrentSession();            NHibernate.IQuery query = session.CreateQuery("from User");return query.List<Model.User>();}    }
復制代碼復制代碼

然后才是最難的一部分,就是要寫Spring.NET的配置文件,讓Spring.NET來管理NHibernate。首先在Config中創建一個SpringNHibernate.xml文件。這個文件時就是用來配置管理NHibernate的。同時設置為“嵌入的資源”。內容如下:

復制代碼復制代碼
<?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net"xmlns:db="http://www.springframework.net/database"xmlns:tx="http://www.springframework.net/tx"         >  <!--描述-->  <description>使用Spring.NET管理NHibernate  </description>  <!-- 通過主應用程序的上下文配置文件引用 ,其實就是要讀取Web.config中的databaseSettings的內容,和下面的db:provider相互作用-->  <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">    <property name="ConfigSections" value="databaseSettings"/>  </object>  <!-- 數據庫的配置 ,其實就是提供數據庫的連接字符串還有相應的數據庫dll文件,這里使用的是MySQL-5.2.3,而在項目無需引用MySql.Data.dll文件(可能自帶吧)。其中$符號的內容是占位符,它的值在Web.config中進行設置-->  <db:provider id="DbProvider"provider="MySql-5.2.3"connectionString="server=${db.server};Database=${db.database};uid=${db.user};pwd=${db.passWord}"               />  <!-- NHibernate 配置 -->  <!-- 可以通過 name 為其指定別名 name="SessionFactory" 這個用來設置NHibernate的Session的管理對象,使用Spring.NET提供的LocalSessionFactoryObject來管理NHibernate的Session。因為NHibernate的Session是線程不安全的。-->  <object id="MyNHibernateSessionFactory"type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate32"          >    <!-- 關于數據庫連接的配置,直接使用 DbProvider 中的設置,這樣,不需要為 Hibernate 再提供連接串和驅動 -->    <property name="DbProvider" ref="DbProvider"/>    <!-- 包含有映射文件的程序集,需要分析的hbm程序集名稱 -->    <property name="MappingAssemblies">      <list>        <value>Com.Symjie.Model</value>      </list>    </property>    <!-- 其他的參數 -->    <property name="HibernateProperties">      <dictionary>        <!-- 方言 -->        <entry key="dialect" value="NHibernate.Dialect.MySQL5Dialect"/>        <entry key="use_proxy_validator" value="false" />        <entry key="show_sql" value="true"/>      </dictionary>    </property>    <!-- 和Spring.NET結合使用事務,必須設置此項 -->    <property name="ExposeTransactionAwareSessionFactory" value="true" />  </object></objects>
復制代碼復制代碼

然后在Config中在創建一個”Objects.xml”,這個文件就是Spring.NET的對象文件,用來實現IoC的。在D_User中有一個屬性SessionFactory。這個屬性和“MyNHiber

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴安盟| 浠水县| 奉化市| 肇东市| 长丰县| 固安县| 沙田区| 林口县| 登封市| 濮阳县| 电白县| 卫辉市| 温州市| 兰坪| 舟曲县| 福清市| 交口县| 株洲县| 田东县| 东城区| 海口市| 莲花县| 烟台市| 色达县| 浦江县| 白玉县| 治县。| 耿马| 霍邱县| 宣城市| 和田市| 中卫市| 青海省| 宜城市| 出国| 绥阳县| 浦北县| 叶城县| 同江市| 招远市| 舒城县|