集合ADO.NET元素過程描述
如果此時(shí)你用ADO.NET元素對(duì)數(shù)據(jù)進(jìn)行CRUD操作并不會(huì)使用存儲(chǔ)過程,我們需要將存儲(chǔ)過程進(jìn)行映射。查詢和另外三項(xiàng)操作的映射方式不同,我們分開討論。ADO.NET元素查詢存儲(chǔ)過程的導(dǎo)入。
名稱取為“NorthWindEF.edmx”,然后點(diǎn)擊“添加”。然后,在后面的步驟中,數(shù)據(jù)庫(kù)選擇“NorthWind”后,在選擇影射對(duì)象是,把表、試圖、存儲(chǔ)過程全部都選上,其他的均保存默認(rèn)的即可。最終生成的結(jié)果如下圖所示。***,談?wù)勎艺J(rèn)為的一些缺點(diǎn):
Edmx包含了所有對(duì)象的csdl,ssdl,msl文件,過于龐大,如果要手動(dòng)修改這個(gè)文件,一不小心,眼睛看花了,就改錯(cuò)了。(和數(shù)據(jù)集一樣的毛病)。目前EF支持表、試圖、存儲(chǔ)過程,其他的對(duì)象不支持,而且對(duì)使用存儲(chǔ)過程有很多限制(ADO.NET元素目前有EFExtension提供了更多對(duì)象的支持)。
除了MS SQL Server可直接提供這種可視化的設(shè)計(jì)界面外,其他的數(shù)據(jù)庫(kù)目前還沒有提供可視化設(shè)計(jì)界面(但可以自己來實(shí)現(xiàn),后面介紹)。性能問題。(網(wǎng)上看到有說比ADO.Net慢700百,又有人說比ADO.net快的,具體情況我還沒測(cè)試過, 但我覺得像這個(gè)些類型的框架,性能肯定是比上原生態(tài)的ADO.net慢)好了,接下來,學(xué)習(xí)以下簡(jiǎn)單的各種操作。
接觸ADO.NET Entityframework有一段時(shí)間了,ADO.NET元素在實(shí)際項(xiàng)目的應(yīng)用中有一個(gè)***的問題就是M$沒有對(duì)多種數(shù)據(jù)庫(kù)提供支持,在筆者最近碰到的一個(gè)網(wǎng)站項(xiàng)目中,公司要求使用MYSQL,到處找MYSQL的EFProvider,發(fā)現(xiàn)Devart dotConnect還不錯(cuò),提供了比較完善的解決方案,ADO.NET元素只是在自動(dòng)從數(shù)據(jù)庫(kù)提取物理模型中存在編碼的問題,到目前還沒有找到解決辦法,但是Devart dotConnect是收費(fèi)的,專業(yè)版得上千美刀,有Free Edition,但是不提供對(duì)EntityFramwork的支持。
無奈,尋找其他的解決方案。偶然間在一份SUN的文檔中有提到在未來版本中對(duì)AEF的支持,到MYSQL.com下載***的MySql.Data.dll為5.2.5版,并沒有對(duì)AEF提供支持,再到源碼服務(wù)器,驚喜得看到多了一個(gè)MySql.Data.Entity項(xiàng)目,MySql.Data也已經(jīng)到了5.3.0版。立刻下載。#t#
下載后先編譯MySQL.Data,并簽名程序集,MySQL.Data.Entity引用MySQL.Data,編譯并簽名,ADO.NET元素取得MySQL.Data.Entity的PublicKeyToken,修改MySQL.Data中類MySqlClientFactory的IServiceProvider.GetService方法相關(guān)的代碼,將Provider類型指向剛才編譯好的MySQL.Data.Entity程序集中的MySql.Data.MySqlClient.MySqlProviderServices類,修改后大概就像下面的樣子。