ASP. NET MVC4 NHibernate篇

本篇主要介紹一下asp.net項目開發的基礎知識。要想獨立開發一款基於NHibernate的項目,你需要掌握以下知識:C#語言及其編寫、搭建項目架構、引用SpringNHibernate文件、掌握NHibernate的三種數據庫語句編寫、配置NHibernateSpring文件,以及HtmlCssScript( 可掌握easyUIJQuery、angularJS和bootStrap )語言。


1、項目架構

項目一般包含以下部分:

Views:存放用於頁面展示的文件,例如.aspx.cshtml等爲後綴的文件。

Configs:存放NHibernate的配置文件。

Controls:存放控制器。

IBLL:業務邏輯層接口。

BLL:業務邏輯層,處理業務上的邏輯判斷等。

IDAO:數據訪問層接口。

DAO:數據訪問層,與數據庫直接打交道。

Model:存放數據結構模型和模型映射文件。

Content:存放一些CSS文件和圖片。

Scripts:存放JS腳本文件。

當然,根據需求不同,項目的架構也會隨之改變。

2、配置文件

NHibernate的配置文件一般存放於Configs項目下。配置文件包括以下

Controls.xml:存放控制層的配置的文件。

Business.xml:存放BLL層的配置的文件。

DAO.xml:存放DAO層的配置的文件。

CommonDAO.xml

實例:


Controls.xml:配置控制器層

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
  <object id="HomeController" type="Web.Controllers.HomeController,Web">
    <property name="UserBLL" ref="UserBLL" />
  </object>
</objects>

Business.xml:配置BLL層

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
  <object id="UserBLL" type="BLL.UserBLL,BLL">
    <property name="UserDAO" ref="UserDAO" />
  </object>
</objects>

DAO.xml:配置DAO層

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
  <object id="UserDAO" type="DAO.UserDAO,DAO">
    <property name="SessionFactory" ref="SessionFactory" />
  </object>
</objects>

CommonDAO.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
         xmlns:db="http://www.springframework.net/database">
  <description>
    Definitions for the NHibernate Objects.
  </description>
  <!-- 數據訪問對象替換位置 -->
  <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
    <property name="ConfigSections" value="databaseSettings"/>
  </object>
  <!-- Database and NHibernate Configuration  配置使用Nhibernate -->
  <db:provider id="DbProvider"
               provider="${db.provider}"
               connectionString="${db.connectionString}"/>

  <!--provider="SqlServer-2.0"  connectionString="database=BookDB;uid=sa;pwd=123456;server=.;"-->
  <object id="SessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
    <property name="DbProvider" ref="DbProvider" />
    <property name="MappingAssemblies">
      <list>
        <!--這是配置嵌入資源 對應的xx.hbm.xml文件所在的項目名稱-->
        <value>${nhibernate.domain}</value>
      </list>
    </property>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="hibernate.current_session_context_class"
          value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate32"/>

        <!-- session管道 -->
        <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>

        <!--數據庫方言-->
        <entry key="dialect" value="${nhibernate.dialect}"/>

        <!--數據庫驅動-->
        <entry key="connection.driver_class" value="${nhibernate.driverclass}"/>

        <!-- 外連接 -->
        <entry key="use_outer_join" value="true"/>

        <!-- 是否顯示SQL語句 -->
        <entry key="show_sql" value="${nhibernate.show_sql}"/>
      </dictionary>
    </property>
  </object>

  <object id="HibernateTransactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32">
    <property name="DbProvider" ref="DbProvider" />
    <property name="sessionFactory" ref="SessionFactory" />
  </object>

  <object id="TransactionInterceptor" type="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data">
    <property name="TransactionManager" ref="HibernateTransactionManager" />
    <property name="TransactionAttributeSource">
      <object type="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data" />
    </property>
  </object>
</objects>

最後,別忘了給xml文件的屬性設置爲“嵌入的資源”。

控制器裏要寫上用到的IBLL層對象的申請。

BLL層要寫上用到的IDAO層對象的申請。


3、SpringNHibernate引用文件(版本必須要對應,否則會報錯,以下是其中一種)

文件名 版本

Common.Logging 2.0.0.0
Common.Logging.Log4Net 2.0.0.0
Iesi.Collections 1.0.1.0(DAO)
log4net 1.2.10.0
NHibernate 3.2.0.4000(DAO)
Spring.Aop 1.3.2.40943(DAO)
Spring.Core 1.3.2.40943(DAO)
Spring.Data 1.3.2.40943(DAO)
Spring.Data.NHibernate32 1.3.2.40943(DAO)
Spring.Web.Mvc 1.3.2.40943
Spring.Web 1.3.2.40943
DotNetOpenAuth版本都要4.0.0.0


最後,你需要熟悉框架的流程以及數據傳送json等 )

當用戶瀏覽一個頁面時,頁面會將請求發送給控制層,然後通過業務邏輯層和數據訪問層將相應的數據取出,通過Model回傳給控制層,再由控制層決定該用哪個View來顯示頁面呈現給用戶。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章