一、解決的問題
前文為解決數(shù)據(jù)庫操作設(shè)計(jì)的?TestMysql?類,僅簡單地封裝了一個(gè)Query函數(shù),代碼如下:
public class TestMysql
{
public static string SqlserverConnectStr = "server=127.0.0.1;charset=utf8;user id=root;persistsecurityinfo=True;database=test;Password=hynu504.";
public static DataSet Query(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(SqlserverConnectStr))
{
DataSet ds = new DataSet();
try
{
connection.Open();
MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
}
很顯然,一個(gè)函數(shù)去解決所有數(shù)據(jù)庫中所有表的描述、操作,肯定是遠(yuǎn)遠(yuǎn)不夠,即使完成系統(tǒng)功能也會(huì)使代碼非常復(fù)雜。因此需要封裝更多的功能。
二、ORM
ORM 是 Object Relational Mapping 的縮寫。意思是對(duì)象關(guān)系映射,是對(duì)象和關(guān)系型數(shù)據(jù)庫之間的數(shù)據(jù)交互問題的解決方案的一種規(guī)范。
?簡而言之:把數(shù)據(jù)庫中的表、視圖等,用類來描述(數(shù)據(jù)表示),然后在定義的數(shù)據(jù)基礎(chǔ)根據(jù)業(yè)務(wù)邏輯(就是系統(tǒng)需要啦)封裝出一個(gè)個(gè)對(duì)類進(jìn)行操作的功能?!源藢?shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作。
第一步當(dāng)然是數(shù)據(jù)描述,首先了解一下JAVA中所謂POJO的概念:
“Plain Old Java Object”“簡單java對(duì)象”。POJO的內(nèi)在含義是指那些沒有從任何類繼承、也沒有實(shí)現(xiàn)任何接口,更沒有被其它框架侵入的java對(duì)象。
這與所謂的實(shí)體類等概念是比較類似的,可以理解為就是描述數(shù)據(jù)——不考慮行為、不考慮派生、多態(tài)等等!
其實(shí)也符合編程解決問題的思想: 以數(shù)據(jù)為中心,再考慮行為——有了籃球的定義再去設(shè)計(jì)投籃、傳球、運(yùn)球等操作!
于是就有了所謂的解決問題的層次問題:
實(shí)體層(Model 或者 POJO 或者Entity或者Bean? 比較近似的概念):往下對(duì)數(shù)據(jù)表進(jìn)行描述,往上提供給數(shù)據(jù)訪問層操作的對(duì)象;
數(shù)據(jù)訪問層(DAL 或者 DAO等等):往下操作的對(duì)象為實(shí)體類,往上實(shí)現(xiàn)用戶所需的業(yè)務(wù)邏輯,本層關(guān)心的數(shù)據(jù)庫CURD等操作的具體實(shí)現(xiàn);
業(yè)務(wù)邏輯層(BLL 或者Server等等):往下對(duì)DAL層的操作進(jìn)行調(diào)用,往上提供用戶邏輯接口;
以上個(gè)人見解,大體意思類似于TCP/IP等網(wǎng)絡(luò)模型各層功能的劃分:各層實(shí)現(xiàn)對(duì)上一層的支撐和功能實(shí)現(xiàn),對(duì)其他層是 ”透明“ 的;
三、動(dòng)軟
動(dòng)軟是可以根據(jù)數(shù)據(jù)庫表自動(dòng)生成對(duì)應(yīng)的 實(shí)體、數(shù)據(jù)訪問和業(yè)務(wù)邏輯層的工具(也包括WEB,一般不用),當(dāng)然也包括了所需要的DLL和LIB(不同數(shù)據(jù)庫有不同的DLL)。啟動(dòng)界面:
第一步,新建數(shù)據(jù)庫連接:
?第二步,選擇對(duì)應(yīng)的數(shù)據(jù)庫,以MYSQL為例,點(diǎn)擊下一步,填寫數(shù)據(jù)庫的連接信息:
?第三步,測試連接成功后,點(diǎn)確定,提示需要關(guān)閉動(dòng)軟。關(guān)閉后重新啟動(dòng)界面:
?第四步,新建項(xiàng)目,選擇簡單三層結(jié)構(gòu)即可
?第五步,點(diǎn)擊下一步,選擇數(shù)據(jù)庫和數(shù)據(jù)表,然后點(diǎn)擊開始生成:
?其中命名空間等默認(rèn)即可,修改后比較麻煩。
生成后會(huì)自動(dòng)彈出生成的目錄:
1、BLL:業(yè)務(wù)邏輯? ?
2、DAL:數(shù)據(jù)訪問?
3、Model 實(shí)體?
4、DBUitity 工具類?
5、LIB 對(duì)應(yīng)所需的DLL
將以上五個(gè)目錄拷貝到工程所在的目錄:如前文的TestWeb
?最后將四個(gè)工程在VS中添加到解決方案:右鍵解決方案-》添加-》現(xiàn)有項(xiàng)目
添加過程中提示升級(jí),點(diǎn)確認(rèn)即可:效果如下:
?其中LIB不需要添加(也無法添加),它提供了所需要的數(shù)據(jù)庫操作DLL。文章來源:http://www.zghlxwxcb.cn/news/detail-625976.html
以上完成動(dòng)軟自動(dòng)生成簡單的ORM三層,關(guān)于三層的調(diào)用,后文再介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-625976.html
到了這里,關(guān)于【ASP.NET MVC】使用動(dòng)軟(一)(9)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!