新建選擇ADO.NET Entity 項(xiàng)目進(jìn)行詳細(xì)剖析
該類(lèi)型的數(shù)據(jù)的插入與一般的基本SQL類(lèi)型不同,不過(guò)在.net 3.5平臺(tái)上工作的程序員不需要考慮太多訪問(wèn)數(shù)據(jù)庫(kù)的具體代碼,我們可以選擇ADO.NET Entity Framework和Linq to SQL,這里我們以前者為例。方法簡(jiǎn)單介紹如下:
項(xiàng)目中新建,選擇ADO.NET Entity Data Model,根據(jù)向?qū)Ы⒌綌?shù)據(jù)庫(kù)的連接,根據(jù)向?qū)нx擇數(shù)據(jù)庫(kù)中的剛才建立的表images,向?qū)ЫY(jié)束之后項(xiàng)目中會(huì)添加一個(gè)edmx類(lèi)型的文件,默認(rèn)的界面中會(huì)打開(kāi)自動(dòng)生成的實(shí)體類(lèi)圖,我們?cè)谙驅(qū)е羞x擇的所有表格都會(huì)對(duì)應(yīng)一個(gè)實(shí)體類(lèi)默認(rèn)的名稱(chēng)是與數(shù)據(jù)表相同,此處的images對(duì)應(yīng)的實(shí)體類(lèi)也是images,但是這樣默認(rèn)使用的話會(huì)造成歧義,我們需要手動(dòng)修改一下。
點(diǎn)擊images類(lèi)在屬性對(duì)話框中將Name屬性改為image,Entity Set Name可以改為imageSet或者不改動(dòng)保持images表示的是image集合,ADO.NET Entity 之后實(shí)體類(lèi)圖中對(duì)應(yīng)的類(lèi)名也變成image了。這里假設(shè)存放圖片的數(shù)據(jù)庫(kù)名為XXX,那么生成的管理類(lèi)也就是我們后面使用最多的類(lèi)名為XXXEntities。
將圖片保存到SQL server數(shù)據(jù)庫(kù)中首先聲明一個(gè)image類(lèi)型的變量不妨稱(chēng)之為img, image img = new image();,繼而創(chuàng)建一個(gè)XXXEntities對(duì)象, XXXEntities XXX = new XXXEntities();
頁(yè)面showImage.aspx中放入一個(gè)Image控件,命名為Image1,由于圖片是從數(shù)據(jù)庫(kù)取來(lái)的二進(jìn)制文件,因而不像使用文件ADO.NET Entity 系統(tǒng)時(shí)圖片都有自己的URL,我們可以直接設(shè)置其URL為圖片在網(wǎng)站中的路徑,解決方法如下。#t#
新建另外一個(gè)專(zhuān)門(mén)用于提供圖片的asp.net頁(yè)面getImage.aspx,其功能僅僅是從數(shù)據(jù)庫(kù)中讀取圖片,使用Response.BinaryWrite()的方式將圖片數(shù)據(jù)流輸出,接下來(lái)您可能已經(jīng)想到了,我們將image1的URL設(shè)置為上述getImage.aspxADO.NET Entity ,如果需要根據(jù)圖片的id之類(lèi)的信息進(jìn)行選擇,我們?yōu)樵揳sp.net頁(yè)面提供一個(gè)額外的id參數(shù)即可。
讀取圖片,依然使用上述的XXX實(shí)體管理類(lèi),比如獲取id為1的圖片,代碼為:
- int id = int.Parse(Request.QueryString["id"]);
- image img = XXX.imageSet.Where(i=> i.ID == id).First();
- Response.BinaryWrite(img.imageFile);
- 文章出處:DIY部落(http://www.diybl.com/course/7_databases/database_other/20090816/168697.html)