999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

使用Entity Framework快速開發Asp.net網站

2012-12-31 00:00:00趙亮
企業導報 2012年18期

【摘 要】Entity Framework隨Visual Studio 2010 正式發布以來應用日益得到推廣。Entity Framework技術基于傳統的實體聯系模型建立,概念清晰,明顯提高開發效率,這一技術必將成為基于Asp.NET 網頁開發平臺開發的主流數據持久化技術。

【關鍵詞】Entity Framework;Asp.net網站;綁定

一、引言

在傳統的.net網站編寫時需要查詢數據源,就必須使用傳統ado.net 技術,雖然傳統ado.net 把數據庫轉換成DataSet技術執行效率較高,但編寫復雜,必須拼寫出一長串的SQL語句才能得出數據,這樣在程序編寫過程中無法判斷SQL語句是否正確,很容易出現SQL注入風險,對于不同的數據庫編寫的SQL語句也必然有微小的區別,導致開發人員必須要掌握多種數據源的操作方法,才能夠熟練地進行網站開發。

為了解決這些問題,提高開發效率,對象/ 關系映射(Object/Relational Map- ping,ORM)技術應運而生。ADO.NET Entity Framework 是微軟以ADO.NET為基礎發展出來的ORM解決方案。在Entity Framework中的實體數據模型(EDM)由以下三種模型和具有相應文件擴展名的映射文件進行定義。

概念架構定義語言文件 (.csdl) ——概念模型定義。

存儲架構定義語言文件(.ssdl) ——存儲模型定義(又稱邏輯模型)。

映射規范語言文件(.msl) ——存儲模型與概念模型之間的映射定義。

概念模型(.csdl)對應了程序中需要使用的類,存儲模型(.ssdl)對應了程序中需要使用數據表,二者通過映射規范語言(.msl)文件進行了對應,這樣數據表成功的映射成為實體對象,實體框架使用這些基于XML 的模型和映射文件將對概念模型中的實體和關系的創建、讀取、更新和刪除操作轉換為數據源中的等效操作。EDM 甚至支持將概念模型中的實體映射到數據源中的存儲過程。它提供以下方式用于查詢EDM 并返回對象:

LINQ to Entity ——提供語言集成查詢(LINQ) 支持用于查詢在概念模型中定義的實體類型。

Entity SQL ——與存儲無關的SQL 方言,直接使用概念模型中的實體并支持諸如繼承和關系等EDM 功能。

查詢生成器方法——可以使用LINQ 風格的查詢方法構造 Entity SQL 查詢。

2007年,微軟將LINQ作為.NET Framework 3.5中的一部分正式開始推出,它首次使用了一種類似于SQL語句的語法形式統一了對整個.Net Framework框架下的數據源的操作,從而使開發人員只需要使用簡單的LINQ語句就可以查詢出不同數據源的數據。LINQ的語法很像SQL語句但又有所不同,它的關鍵詞包括:from、in、where、order by 、select、group by,此外必須要以select或者group by結尾。

它的語法格式為:var臨時變量=from臨時變量in集合對象或數據庫對象

where 條件表達式

[order by條件]

select 臨時變量中被查詢的值

[group by 條件]

此外,LINQ還支持大量的SQL語法,例如Avg,Sum,Count等等。

由于引入了LINQ to Entities作為中間層查詢、插入、更新和刪除操作全部使用LINQ語句實現,再通過Entity SQL轉換LINQ語句為具體數據庫的SQL語句,實現了與數據庫無關性,降低了開發人員學習復雜度,提高了效率。

二、LINQ to Entity 訪問數據庫

LINQ to Entity 創建ObjectContext封裝實體類,此類作用是“創建”、“讀取”、“更新”和“刪除”操作,并提供查詢所需要的linq語句。類名為:XJZXEntities派生自ObjectContext類,所使用的是華夏學院現代教育技術中心網站的數據庫。XJZXEntities xjzx = new XJZXEntities();通過這個類的實例可輕松實現各類數據庫操作,以下代碼使用LINQ to Entity 實現數據表Tb_Common_Role(權限)插入查詢操作:

實現數據表Tb_Common_Role(權限)插入操作:

實現數據表Tb_Common_Role(權限)插入操作:

實現數據表Tb_Common_Role(權限)刪除操作

實現數據表Tb_Common_Role(權限)更新操作

Entity Framework可以非常方便的實現各種數據表的插入、刪除、更新、查詢操作,注意每張數據表必須要有對應的主鍵,如無主鍵執行過程中會出現錯誤。

三、Entity Framework與Asp.net Web控件的綁定

Asp.net提供了許多xxxDataSource控件,如SqlDataSource,ObjectDataSource等,這些數據源控件大大方便了我們的數據綁定操作。不幸的是目前還沒有針對Entity Framework的數據源控件發布,但是將數據綁定到諸如ListBox,Gridview或DetailsView控件也是很簡單的。這源于使用ObjectContext操作返回的IQueryable對象或是使用EntityClient查詢返回的ObjectQuery對象都實現了IEnumerable接口。以Gridview為例,代碼示例如下:

這樣很容易將這些數據綁定到數據控件并在網頁上顯示結果。

四、Entity Framework分頁語句研究

在linq中提供了take和skip實現分頁操作,Take: 返回前N條記錄,丟棄剩余部分,SQL對應語法為TOP n子查詢;Skip:跳過前N條記錄,返回剩余部分,SQL對應語法為Where ROW_NUMBER()或者NOT IN(Select Top N…)其代碼如下:

Skip語句使用的是Sql2005 版本才出現的ROW_NUMBER方法進行分頁,其代碼在Sql2005 和Sql2008上執行效率高的驚人,Entity Framework內建的skip limit分頁生成的分頁語句對oracle 和sql2005以下的版本無效,根本原因是其使用的ROW_NUMBER方法在oracle 中與 mssql中的函數意義不一樣,而sql2005以下版本根本沒有ROW_NUMBER,造成其在oracle和sql2000中分頁失效。經過研究對比生成的Sql語句發現,只要替換掉Skip就可以修正這個問題具體代碼如下:

這樣做雖然降低了一點執行效率,但代碼通用性得到了加強,在oracle和sql2000中不用修改代碼即可使用。

五、Entity Framework更改數據庫的連接字符串

默認情況下(Visual Studio對Entity Framework數據項目的默認設置),EDM這個XML文件被作為資源在編譯時嵌入到程序集中。這種情況下當更改EDM后需要重新編譯這個程序集才能 使更改生效。通過更改項目屬性也可以讓EDM作為三個獨立的XML文件存在于項目中。為了讓應用程序可以找到EDM(無論其以什么方式存儲)需要一個鏈接 字符串來指示EDM所在的位置。實體模型設計器生成的鏈接字符串如下所示:

關鍵的一點應用程序是怎樣找到這個字符串的,對于使用EntityClient的情況,可以直接將連接字符串賦給EntityConnection的ConnectionString屬性,另外對于使用ObjectContext,其可以自動由配置文件檢索這個連接字符串。

六、結語

使用Entity Framework 可以非常簡單的把關系型數據源通過XML 文件定義為對象類,并用這些類完成數據訪問,大大提高了數據訪問層編程效率。雖然EDM在數據訪問時跟SQL 語句比效率有待提高,但是其靈活方便的使用必將替代ADO.NET SQL語句拼接方式,成為Asp.NET 平臺主要數據訪問方式。

參 考 文 獻

[1]Roger著,孟兆煒譯.ADO.NET 3.5高級編程——應用LINQ Entity Framework[M].北京:清華大學出版社,2010(4)

[2]微軟MSDN

主站蜘蛛池模板: 久久无码av一区二区三区| 亚洲日本www| 毛片在线看网站| 好紧太爽了视频免费无码| 国产一区二区三区精品久久呦| 免费看美女自慰的网站| 国内黄色精品| 日韩精品久久无码中文字幕色欲| 国产精品无码影视久久久久久久 | 亚洲日韩欧美在线观看| 福利视频一区| 亚洲中文无码av永久伊人| 亚洲v日韩v欧美在线观看| 国产亚洲欧美在线人成aaaa | 狠狠久久综合伊人不卡| 国产精品女人呻吟在线观看| 久久亚洲中文字幕精品一区 | 国产精品第5页| 国产成人高清精品免费5388| 午夜精品国产自在| 免费一级无码在线网站| 无码人妻热线精品视频| 欧美视频在线播放观看免费福利资源| 国产综合欧美| 国产一级α片| 亚洲精品第五页| 91在线播放免费不卡无毒| 情侣午夜国产在线一区无码| 国产欧美日韩综合在线第一| 亚洲第一色视频| 免费激情网站| 亚洲国产成熟视频在线多多| 亚洲女同一区二区| 色综合中文综合网| 在线亚洲天堂| 91在线日韩在线播放| 久久男人资源站| 婷婷午夜影院| 夜色爽爽影院18禁妓女影院| 狠狠做深爱婷婷综合一区| 国产99在线观看| 国产白丝av| 亚洲综合色区在线播放2019| 老司机午夜精品视频你懂的| 国产成人午夜福利免费无码r| 亚洲一级色| 亚洲日韩精品综合在线一区二区| 日本人又色又爽的视频| 免费人欧美成又黄又爽的视频| 手机在线免费不卡一区二| 欧美成人a∨视频免费观看| 欧美成人午夜视频免看| 日韩成人免费网站| 成人噜噜噜视频在线观看| 自拍欧美亚洲| 亚洲黄色激情网站| 久久中文字幕不卡一二区| 视频二区国产精品职场同事| 一级高清毛片免费a级高清毛片| 欧美伦理一区| 一级高清毛片免费a级高清毛片| 日韩123欧美字幕| 伦精品一区二区三区视频| 中文字幕久久亚洲一区| 国产啪在线91| 亚洲综合18p| 成人在线观看不卡| 麻豆国产在线观看一区二区| 亚洲中文字幕国产av| 99久久国产自偷自偷免费一区| 色婷婷天天综合在线| 午夜不卡视频| 婷婷五月在线视频| 国产区在线观看视频| 超清人妻系列无码专区| a天堂视频在线| 99er精品视频| 91在线播放国产| 欧美日韩中文国产va另类| 国产小视频免费| 欧洲高清无码在线| 久久精品丝袜高跟鞋|