亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列

系統(tǒng) 2984 0

就以一個(gè)簡(jiǎn)單的DirectCenter項(xiàng)目開(kāi)始介紹這個(gè)框架吧,DirectCenter主要分為用戶管理,部門(mén)管理,公司管理三個(gè)模塊。首先先搭建起解決方案DirectCenter:
DirectCenter:
DirectCenter.Model (類庫(kù)項(xiàng)目)實(shí)體類庫(kù),其中包括hibernate映射文件(可以把映射文件放到DAL層,這樣使Model也比較單純,而DAL則只是Nhibernate的完整實(shí)現(xiàn))
DirectCenter.IDAL (類庫(kù)項(xiàng)目)數(shù)據(jù)訪問(wèn)層接口
DirectCenter.DAL (類庫(kù)項(xiàng)目)數(shù)據(jù)庫(kù)訪問(wèn)層實(shí)現(xiàn)(采用NHibernate)
DirectCenter.IBLL (類庫(kù)項(xiàng)目)業(yè)務(wù)層接口
DirectCenter.BLL (類庫(kù)項(xiàng)目)業(yè)務(wù)層實(shí)現(xiàn)( 使用IDAL,通過(guò)spring.net的IOC注入實(shí)際的數(shù)據(jù)訪問(wèn)層 )
DirectCenter.App (類庫(kù)項(xiàng)目)系統(tǒng)的配置,其中包括Nhibernate,Spring.net的一些配置信息,業(yè)務(wù)層的DAL注入.
DirectCenter.UnitTest (類庫(kù)項(xiàng)目) 使用nunit對(duì)業(yè)務(wù)層進(jìn)行單元測(cè)試

DirectCenter.DTO (類庫(kù)項(xiàng)目) data transform object 用于和前臺(tái)UI層交互的實(shí)體。之所以分出來(lái),也是為了考慮不只是為了Web項(xiàng)目,同時(shí)包括WebService等其它UI. (可能會(huì)有不少人會(huì)問(wèn)已經(jīng)有Model了,為什么還需要DTO?)

DirectCenter.Controllers (類庫(kù)項(xiàng)目) Web控制器。用戶請(qǐng)求和后臺(tái)業(yè)務(wù)層的中轉(zhuǎn),接收并分析用戶請(qǐng)求,調(diào)用業(yè)務(wù)層完成請(qǐng)求,再分發(fā)給用戶。( 注意這里調(diào)用的是IBLL,是業(yè)務(wù)邏輯接口,也是通過(guò)Spring.Net的IOC注入具體的業(yè)務(wù)實(shí)現(xiàn))。
DirectCenter.Web (Web Application) 單純的View層,主要由ExtJs完成界面和Ajax請(qǐng)求。

當(dāng)然,這里也可以加一個(gè)Controllers的單元測(cè)試項(xiàng)目,不過(guò)我覺(jué)得這里很多時(shí)候用處不是很大。因?yàn)檫@里Controllers的工作比較統(tǒng)一和單純了。
首先先設(shè)計(jì)和建立數(shù)據(jù)庫(kù),字段和說(shuō)明如下:


數(shù)據(jù)庫(kù)中沒(méi)有外鍵關(guān)系,因?yàn)橐粚?duì)多,多對(duì)多這些關(guān)系使用NHibernate的持久層建立和維護(hù),每個(gè)表中都有一個(gè)Version字段,這是為了使用Nhibernate內(nèi)置的對(duì)象的版本控制來(lái)解決并發(fā)問(wèn)題。
接下來(lái)的工作就簡(jiǎn)單了許多,因?yàn)榻裉煳覀冎灰瓿蓪?shí)體就行,而實(shí)體類和映射文件的工作有一些輔助工具可以幫我們生成,比如codesmith, Nconstruct,Database2Sharp等,不過(guò)我還沒(méi)有發(fā)現(xiàn)哪個(gè)工具能夠很好的生成關(guān)系映射.這里只把User的類和映射文件放在這里,其 它的兩個(gè)可以在源代碼附件中找到。

User.cs
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace DirectCenter.Model
{


[Serializable]
public class User
{
/**/ /// <summary>
/// 創(chuàng)建日期
/// </summary>

public virtual DateTimeCreateTime
{
get ;
set ;
}


/**/ /// <summary>
/// 創(chuàng)建人
/// </summary>

public virtual System.StringCreator
{
get ;
set ;
}




/**/ /// <summary>
/// Email地址
/// </summary>

public virtual System.StringEmail
{
get ;
set ;
}


/**/ /// <summary>
/// 用戶編號(hào)
/// </summary>
///

public virtual System.StringUserID
{
get ;
set ;
}


/**/ /// <summary>
/// 導(dǎo)入日期
/// </summary>

public virtual DateTime ? ImportTime
{
get ;
set ;
}



/**/ /// <summary>
/// 手機(jī)號(hào)碼
/// </summary>

public virtual System.StringMobile
{
get ;
set ;
}


/**/ /// <summary>
/// 用戶密碼
/// </summary>

public virtual System.StringPassword
{
get ;
set ;
}


/**/ /// <summary>
/// 電話號(hào)碼
/// </summary>

public virtual System.StringTelephone
{
get ;
set ;
}


/**/ /// <summary>
/// 用戶名稱
/// </summary>

public virtual System.StringUserName
{
get ;
set ;
}


/**/ /// <summary>
/// 生效日期
/// </summary>

public virtual DateTime ? ValidFrom
{
get ;
set ;
}



/**/ /// <summary>
/// 失效日期
/// </summary>

public virtual DateTime ? ValidTo
{
get ;
set ;
}



/**/ /// <summary>
/// 所屬公司
/// </summary>

public virtual CompanyCompany
{
get ;
set ;
}



/**/ /// <summary>
/// 所屬部門(mén)
/// </summary>

public virtual DepartmentDepartment
{
get ;
set ;
}



/**/ /// <summary>
/// 直接主管
/// </summary>

public virtual UserManager
{
get ;
set ;
}


}

}


<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> <? xmlversion="1.0"encoding="utf-8" ?>
< hibernate-mapping xmlns ="urn:nhibernate-mapping-2.2" >

< class name ="DirectCenter.Model.User,DirectCenter.Model" table ="UserAccount" lazy ="true" >

< id name ="UserID" column ="UserID" type ="System.String" >
< generator class ="assigned" />
</ id >

< property name ="CreateTime" column ="CreateTime" type ="System.DateTime" />
< property name ="Creator" column ="Creator" type ="System.String" length ="32" />
< property name ="Email" column ="Email" type ="System.String" length ="255" />

< property name ="Mobile" column ="Mobile" type ="System.String" length ="15" />
< property name ="Password" column ="Password" type ="System.String" length ="64" />
< property name ="Telephone" column ="Telephone" type ="System.String" length ="20" />
< property name ="UserName" column ="UserName" not-null ="true" type ="System.String" length ="32" />
< property name ="ValidFrom" column ="ValidFrom" type ="System.DateTime" />
< property name ="ValidTo" column ="ValidTo" type ="System.DateTime" />


<!-- 用戶所屬交易公司 -->
< many-to-one name ="Company"
class
="DirectCenter.Model.Company,DirectCenter.Model"
cascade
="none"
column
="CompanyID"
/>

<!-- 用戶所屬部門(mén) -->
< many-to-one name ="Department"
class
="DirectCenter.Model.Department,DirectCenter.Model"
cascade
="none"
column
="DepartmentID"
/>

<!-- 主管 -->
< many-to-one name ="Manager"
class
="DirectCenter.Model.User,DirectCenter.Model"
cascade
="none"
column
="ManagerID"
/>
</ class >
</ hibernate-mapping >

注:User的表名和實(shí)體名不一致的原因是因?yàn)閁ser是數(shù)據(jù)庫(kù)中的關(guān)鍵字。另外需要注意的是,映射文件中的命名空間要正確,映射文件(*.hbm.xml)不要忘了設(shè)置成Embedded Resource (嵌入式資源)。

數(shù)據(jù)庫(kù)設(shè)計(jì),實(shí)體,映射文件是使用這個(gè)框架開(kāi)發(fā)最關(guān)鍵的,畢竟是轉(zhuǎn)換需求的最重要的一步。如果設(shè)計(jì)的好的話,接下來(lái)的開(kāi)發(fā)相對(duì)容易多了。下次介紹數(shù)據(jù)訪問(wèn)層和業(yè)務(wù)層的實(shí)現(xiàn)。

代碼

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 波多野结衣一区2区3区 | 一级片视频免费看 | 在线播放国产区 | 91青草久久久久久清纯 | 天天干夜干 | 亚洲国产精久久小蝌蚪 | 中文字幕在线视频不卡 | 精品视频久久 | 国产精品五月天 | 亚洲精品国产一区二区图片欧美 | 国产一级视频在线观看 | 日本黄色免费一级片 | 成人黄性视频 | 久久精品国产精品亚洲精品 | 日韩亚洲一区中文字幕在线 | 依人综合网| 久久国产成人福利播放 | 四虎成人免费观看在线网址 | 欧美69p| 亚洲综合在线另类色区奇米 | 桃花在线视频社区 | 欧美日韩在线视频一区 | 国产精品亚洲精品观看不卡 | 亚洲成a人片毛片在线 | 久久精品国产一区二区三区 | 成 人 黄 色 大 片全部 | 4hu影院最新地址www | 在线视频亚洲 | 四虎www成人影院观看 | 婷婷激情视频 | 80s成年女人毛片免费观看观看 | 欧美v亚洲v国产v | 久久精品加勒比中文字幕 | 亚洲精品一区二区三区婷婷 | 欧美久久久久久久久 | 中文字幕第一页亚洲 | 亚洲黄页| 黄片123| 手机福利在线观看 | 噜噜狠狠| 亚洲欧洲一区二区三区在线 |