Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美激情欧美狂野欧美精品免费,九九色视频在线观看,国产不卡在线观看视频

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          汽車之家網(wǎng)站的設(shè)計與實現(xiàn)-論文

          汽車之家網(wǎng)站的設(shè)計與實現(xiàn)-論文

          摘 要 1

          第一章 緒論 2

          1.1研究背景 2

          1.2研究意義 2

          1.3國內(nèi)外文獻綜述 2

          1.3.1國外文獻綜述 2

          1.3.2國內(nèi)文獻綜述 3

          第2章 汽車之家門戶網(wǎng)站的需求分析 4

          2.1系統(tǒng)的可行性分析 4

          2.1.1系統(tǒng)的經(jīng)濟可行性 4

          2.1.2系統(tǒng)的技術(shù)可行性 4

          2.1.3系統(tǒng)的操作可行性 4

          2.2系統(tǒng)的目標(biāo)分析 5

          2.3系統(tǒng)的功能需求分析 5

          2.3.1游客用例分析 6

          2.3.2會員用例分析 7

          2.3.3管理員用例分析 8

          2.4系統(tǒng)數(shù)據(jù)庫分析 9

          第3章 汽車之家門戶網(wǎng)站的設(shè)計 10

          3.1系統(tǒng)功能模塊的劃分 10

          3.2系統(tǒng)數(shù)據(jù)流圖 10

          3.3系統(tǒng)數(shù)據(jù)庫設(shè)計 12

          第4章汽車之家門戶網(wǎng)站的實現(xiàn) 15

          4.1系統(tǒng)實現(xiàn)的功能 15

          4.2汽車產(chǎn)品瀏覽查詢模塊實現(xiàn) 15

          4.3會員注冊模塊實現(xiàn) 15

          4.4留言本功能模塊實現(xiàn) 16

          4.5用戶管理模塊實現(xiàn) 16

          4.6汽車產(chǎn)品公告模塊實現(xiàn) 16

          第5章 汽車之家門戶網(wǎng)站的測試 18

          5.1系統(tǒng)測試概述 18

          5.2系統(tǒng)測試用例 18

          結(jié)論 21

          參考文獻 22

          致 謝 23

          摘 要

          隨著互聯(lián)網(wǎng)的快速發(fā)展,汽車企業(yè)為了求生存、謀發(fā)展,必須順應(yīng)時代的發(fā)展潮流,為汽車企業(yè)構(gòu)建一套企業(yè)門戶網(wǎng)站平臺,從而在競爭日益復(fù)雜的汽車市場中占據(jù)先機?;ヂ?lián)網(wǎng)的商業(yè)價值愈發(fā)顯現(xiàn),各個企業(yè)以網(wǎng)絡(luò)為基礎(chǔ),構(gòu)建一個信息化平臺,是大勢所趨,基于網(wǎng)路平臺的市場競爭將是未來汽車企業(yè)的主攻點,在充滿機遇和挑戰(zhàn)的現(xiàn)代化浪潮中,汽車企業(yè)必須與時俱進,否則將會處于被動的局面。

          關(guān)鍵詞:汽車企業(yè);門戶網(wǎng)站;ASP.NET;信息化平臺;Web應(yīng)用程序

          第4章汽車之家門戶網(wǎng)站的實現(xiàn)

          4.1系統(tǒng)實現(xiàn)的功能

          在本文第三章和第四章的基礎(chǔ)上,將基于ASP.NET的汽車企業(yè)門戶網(wǎng)站系統(tǒng)的功能模塊劃分為九大模塊,本將將實現(xiàn)這九大模塊,分別為:汽車產(chǎn)品瀏覽查詢模塊、會員注冊模塊、留言本功能模塊、用戶管理模塊、汽車產(chǎn)品公告模塊、汽車產(chǎn)品新聞模塊、留言本管理模塊、汽車產(chǎn)品管理模塊以及密碼找回模塊。

          4.2汽車產(chǎn)品瀏覽查詢模塊實現(xiàn)

          該功能模塊實現(xiàn)用戶對汽車產(chǎn)品信息的方便瀏覽,包括汽車產(chǎn)品介紹、最新汽車新聞熱點、本網(wǎng)站最新公告等消息,這些瀏覽內(nèi)容清晰條理,以最大限度的方便用戶的瀏覽,此外為了滿足用戶對本網(wǎng)站汽車產(chǎn)品的查詢要求,本網(wǎng)站提供對汽車產(chǎn)品類別和汽車產(chǎn)品具體信息查詢,通過這種層次化的查詢方式,便于客戶快速準(zhǔn)確的查詢到自己關(guān)心的商品。

          1)汽車產(chǎn)品介紹、最新汽車新聞熱點、本網(wǎng)站最新公告這些內(nèi)容通過DataList控件進行顯示,對DataList任務(wù)進行部署,在項模板(ItemTemplate)上進行編輯,在對表單進行布局設(shè)計后,將要顯示的數(shù)據(jù)項列出,并在每一個數(shù)據(jù)項目名稱后邊添加一個Label,在其對應(yīng)的Label任務(wù)中完成DataBinds的編輯工作,使用自定義綁定,用代碼表達式方式完成對數(shù)據(jù)的綁定,建立與底層數(shù)據(jù)庫的連接,從而完成數(shù)據(jù)的顯示。

          2)汽車產(chǎn)品查詢功能是通過AutoSearch.axpx和AutoSearch.aspx.cs頁面文件來完成的,在汽車產(chǎn)品查詢表單中,通過DropDownList控件來選擇搜索條件,在TextBox控件中輸入搜索關(guān)鍵字,在“類別”列表中選擇車型,點擊“搜索”按鈕,執(zhí)行btnsel_Click”事件,在數(shù)據(jù)庫中查詢相應(yīng)數(shù)據(jù),并在查詢表單的頁面中通過Gridview控件顯示查詢結(jié)果。

          4.3會員注冊模塊實現(xiàn)

          該功能模塊實現(xiàn)用戶的注冊功能,本網(wǎng)站汽車信息查詢,用戶留言等內(nèi)容的完成需要用戶登陸,當(dāng)游客注冊本網(wǎng)站成為本系統(tǒng)的合法用戶時可以使用這些功能。該功能模塊UserRegister.aspx頁面來實現(xiàn),當(dāng)點擊首頁中的注冊按鈕時,頁面轉(zhuǎn)到UserRegister.aspx頁面,在該頁面中部署好表單布局,羅列出用戶注冊成會員的所有待注冊信息,用戶名、密碼等內(nèi)容使用TextBox控件來完成,角色通過DropDownList控件來實現(xiàn),在ListlItem成員中添加“普通用戶”,用戶就可以以“普通會員”的角色來注冊;當(dāng)點擊本表單中的“注冊”按鈕時,執(zhí)行“BtnUser_Reg_Click”事件,執(zhí)行SQL插入語句,將用戶的注冊信息,插入到數(shù)據(jù)庫的會員表中。

          4.4留言本功能模塊實現(xiàn)

          該功能模塊實現(xiàn)留言本功能,給本系統(tǒng)的用戶提供留言功能,是實現(xiàn)企業(yè)和用戶密切交流的有效途徑,通過構(gòu)建這樣一種溝通橋梁,企業(yè)可以及時的得到用戶的反饋信息,對企業(yè)中存在的產(chǎn)品和服務(wù)問題進行調(diào)整和改進,同時用戶也能快速的得到企業(yè)的答復(fù),從而解除心中的疑慮,這樣,企業(yè)和用戶之間可以建立良好的信息傳遞機制。

          該功能模塊通過LeaveMes.aspx頁面來實現(xiàn),當(dāng)會員登陸本系統(tǒng)后,通過點擊導(dǎo)航欄中的“留言本”,頁面轉(zhuǎn)到LeaveMes.aspx頁面,在此頁面中已經(jīng)對表單完成了布局,用戶在TextBox控件中添加留言主題、留言內(nèi)容、留言時間以及留言人等內(nèi)容,通過點擊“提交留言”,完成BtnLeaveMes_Click”事件,將會員提交的留言,通過執(zhí)行SQL插入語句,插入到數(shù)據(jù)庫表LeaveMes中,此外通過點擊表單中的“查看我的留言”按鈕,執(zhí)行“BtnCheckMes Click”事件,通過SQL選擇語句來顯示會員的所有留言。

          4.5用戶管理模塊實現(xiàn)

          該功能模塊實現(xiàn)管理員對本網(wǎng)站注冊會員的管理,包括添加用戶、修改用戶和別除用戶,實現(xiàn)該功能的頁面為UserManger..aspx.當(dāng)管理員成功登陸后臺系統(tǒng)時,通過點擊“用戶管理”按鈕,彈出用戶管理表單頁面,在該頁面中引用木板,將母版中的ContentPlaceHolder控件與本頁面合并,通過GridView控件來顯示所有的會員信息,信息的顯示是通過數(shù)據(jù)綁定操作來實現(xiàn)。

          點擊“添加新用戶”按鈕,轉(zhuǎn)到UserMangerAdd.aspx頁面,在該頁面中完成用戶信息添加,通過點擊“添加”按鈕,執(zhí)行BtnUserAdd Click”事件,將表單信息插入到數(shù)據(jù)庫User表中;點擊UserManger.aspx頁面中“修改”按鈕,轉(zhuǎn)到UserMangerUpdate.aspx頁面,將表單中的信息修改,執(zhí)行SQL更新命令,更新到數(shù)據(jù)庫表User中;點擊UserManger..aspx頁面中“刪除”按鈕,轉(zhuǎn)到UserMangerDelete.aspx頁面,執(zhí)行SQL刪除命令,將數(shù)據(jù)從數(shù)據(jù)庫表User中刪除。

          4.6汽車產(chǎn)品公告模塊實現(xiàn)

          該功能模塊實現(xiàn)管理員對本網(wǎng)站汽車產(chǎn)品公告的管理,包括添加公告、修改公告和刪除公告,實現(xiàn)該功能的頁面為Notice Manger..aspx。

          當(dāng)管理員成功登陸后臺系統(tǒng)時,通過點擊“公告管理”按鈕,彈出公告管理表單頁面,這個過程與4.5小節(jié)類似,在該頁面中引用木板,將母版中的ContentPlaceHolder控件與本頁面合并,通過GridView控件來顯示所有的公告信息,信息的顯示是通過數(shù)據(jù)綁定操作來實現(xiàn),公告管理模板的表單如圖4.6所示。點擊“添加公告”按鈕,轉(zhuǎn)到NoticeMangerAdd.aspx頁面,在該頁面中完成公告信息添加,通過點擊添加”按鈕,執(zhí)行BtnNoticeAdd Click”事件,將表單信息插入到數(shù)據(jù)庫Notice表中;點擊NoticeManger..aspx頁面中“修改”按鈕,轉(zhuǎn)到NoticeMangerUpdate.aspx頁面,將表單中的信息修改,執(zhí)行SQL更新命令,更新到數(shù)據(jù)庫表Notice中;點擊NoticeManger..aspx頁面中“刪除”按鈕,轉(zhuǎn)到NoticeMangerDelete.aspx頁面,執(zhí)行SQL別除命令,將數(shù)據(jù)從數(shù)據(jù)庫表Notice中刪除。

          互控件的名稱和定義在學(xué)術(shù)界并沒有統(tǒng)一的標(biāo)準(zhǔn),也許在說某一個名字的時候你并沒有理解它的意思,本文主要是讓大家來見識一下那些常用的交互控件,一起來看看~

          曾幾何時,對于剛?cè)肴Φ慕换ピO(shè)計師遇到一些具有國際視野(略帶一絲裝逼)的產(chǎn)品經(jīng)理時,也會出現(xiàn)上圖中的情形。亦或許在某個不經(jīng)意的瞬間,你也曾犯過下圖的錯誤。那我們今天來認識一下那些常用的交互控件~

          按照功能劃分

          其實關(guān)于交互控件的名稱和定義在學(xué)術(shù)界并沒有統(tǒng)一的標(biāo)準(zhǔn),但是目前市場主流的OS廠商都有自己的標(biāo)準(zhǔn)定義,分為:Apple的Human Interface Guidelines 和 Google的Material Design。

          可以看到:在Apple的Human Interface Guidelines中apple將交互控件歸入視圖(Views)中,而Google的Material Design將交互控件歸入組件(Components)中。

          在這里我不會嚴(yán)格按照兩家給出的標(biāo)準(zhǔn)對每一個控件都做詳盡的贅述,我將把工作中常用的組件按照功能來劃分一下并參考iOS和Google對于這些組件的描述,來向大家簡單梳理一下他們的定義和用法。

          模態(tài)與非模態(tài)

          在正式開始之前,我先簡單介紹一下模態(tài)與非模態(tài)。下面是維基百科關(guān)于模態(tài)窗口(Modal window)的標(biāo)準(zhǔn)解釋。其含義就是:模態(tài)窗口下,用戶被強制必須先與當(dāng)前視窗進行交互才能回到主窗口,此時用戶的行為是線性的。由于其會打斷用戶操作并且強制用戶進行交互,因此模態(tài)控件的使用必須謹慎。

          反之,非模態(tài)即用戶不被強制先與當(dāng)前視窗進行交互也可以回到主窗口,用戶行為是非線性的,擁有更多主動權(quán)。

          收納+引導(dǎo)

          這類控件包括Popup(或者叫Popover)、Action views、Action sheets/ Sheets_bottom、Dropdown menu,其共同特點是由用戶主動觸發(fā)(默認隱藏)、輕量化、指向性較強、包含操作、不會自動消失。

          這類控件多用于屏幕空間的移動設(shè)備,作為低頻但重要的操作入口(Dropdown menu在PC的應(yīng)用場景同樣很多)。這一類控件多半是非模態(tài)的。

          1. Popup(Popover)&Dropdown menu

          iOS的Popup(Popover)與Android的Dropdown menu的使用場景和展現(xiàn)形式基本類似,主要用于收納一些默認不展示的低頻選項, 不過值得注意的是:Popup和Dropdown menu出現(xiàn)的位置和方式與其入口的位置是有很大關(guān)系的,特別當(dāng)入口按鈕是位于屏幕邊緣的時候尤其需要注意。

          此外,Popup(Popover)自帶箭頭的強指示性,同樣適用于展示隱藏操作或新功能上線后的用戶教育。

          2. Action views&Action sheets

          不同于Popup(Popover)和Dropdown menu幾乎可以出現(xiàn)在屏幕的任何位置,Action views和Action sheets/ Sheets_bottom一般出現(xiàn)在屏幕底部。同樣,他們也是用于容納并展示低頻但重要的操作。

          提示+引導(dǎo)

          這類控件包括Toast、Snackbars、HUD,其共同特點是:不一定由用戶主動觸發(fā)、輕量化且一般不包含操作,展示時間較短(一般在3秒以內(nèi))且會自動消失,這類控件多用于系統(tǒng)狀態(tài)或者用戶操作結(jié)果的展示。同樣,這類控件基本都是非模態(tài)的。

          1. Toast

          根據(jù)維基和android開發(fā)者指南的解釋:Toast是一種小巧的作為操作反饋的信息窗口,并且會自動消失。

          有意思的是,據(jù)說一位微軟前員工在開發(fā)MSN Messenger時,覺得MSN彈出通知方式很像烤面包(Toast)烤熟時從烤面包機(Toaster)里彈出來一樣,因此把這種提示方式命名為Toast,后來這位微軟前員工帶著這一習(xí)慣命名跳槽去了Google。

          其實,在實際應(yīng)用中,Toast的應(yīng)用延伸較多,除了作為操作反饋的信息展示窗口,還常常被用來作為系統(tǒng)狀態(tài)更新時的提示,并且在出現(xiàn)的位置上,也沒有非常嚴(yán)格的定義。

          2. Snackbars

          按照使用場景和元素來說,Snackbars可以簡單理解為Toast的升級版本,但根據(jù)Google Material Design的定義,我們可以發(fā)現(xiàn):Snackbars與Toast的主要差別在于前者可以包含一個操作按鈕,而后者不包含。

          在實際應(yīng)用中,Snackbars的應(yīng)用范圍其實比較廣,我們會發(fā)現(xiàn):Snackbars主要被用在展示一些對用戶很重要的操作結(jié)果,比如:刪除文件或者快速引導(dǎo)。

          3. HUD

          HUD全稱叫做UIProgressHUD,其實在iOS Human Interface Guidelines中并沒有Toast和Snackbars這樣的定義,但是與之對應(yīng)的是UIProgressHUD(直譯為界面進程浮層),這種控件是iOS系統(tǒng)私有的,在App Store上線的app原則上是不能直接獲取的,所以出現(xiàn)了許多模仿的第三方控件(主要是app開放者用以與iOS的UI風(fēng)格保持一致的嵌入式組件)。

          4. Toast& Snackbars& HUD小結(jié)

          其實,我們這樣理解這三者之間的關(guān)系更加簡單明了:Google的Toast≈iOS的HUD,Snackbars=Toast+操作按鈕,Toast+Snackbars+HUD都是用來展示app或者系統(tǒng)內(nèi)的狀態(tài)信息。

          提示+操作

          這類控件主要是Dialogs/ Alerts,嚴(yán)格意義上來說,其實Alerts(警告型對話框)也是屬于Dialogs中的一種。Google的Material Design將Dialogs分為:Alert Dialog、Simple Dialog、Communication Dialog和Full-screen Dialog,但是在iOS中并沒有定義Dialogs這種控件,而只是對Alerts做了定義

          對話框的精髓在于讓用戶聚焦,它一般有兩種使用場景:

          1. 系統(tǒng)的關(guān)鍵狀態(tài)提示,并且如果不處理當(dāng)前狀態(tài)會影響到用戶的下一步操作,如:系統(tǒng)錯誤或者電量過低。
          2. 需要用戶特別注意的關(guān)鍵信息處理,如:刪除文件、支付確認Google Material Design關(guān)于對話框的定義。

          1. Alert Dialog

          由于警示型對話框出現(xiàn)的形式非常直接(包含用戶主動觸發(fā)與系統(tǒng)自動觸發(fā)),且常常會打斷用戶當(dāng)前操作行為(強打擾性),因此絕大部分的警示型對話框被用在關(guān)鍵信息處理或者關(guān)鍵狀態(tài)提示上,

          如:

          • 文件操作場景 — 刪除文件,放棄編輯;
          • 支付場景 — 支付二次確認,余額不足提示;
          • 重要狀態(tài)改變場景 — 手機電量低,版本更新。

          值得注意的是:在警示型對話框中的按鈕文案使用一定要避免歧義,不要讓用戶做選擇變成一道哲學(xué)命題。

          Google Material Design總結(jié)了一些Alert Dialog按鈕文案的一些基本規(guī)則:

          (1)文案要釋義操作行為,比如:當(dāng)問題為“您是否要放棄編輯當(dāng)前的郵件”相比于用簡單的“是”或“否”,使用“放棄編輯”和“繼續(xù)編輯”用戶更能清楚操作后的預(yù)期效果。

          (2)從用戶習(xí)慣來說,對于當(dāng)前提問的肯定回答應(yīng)置于右側(cè),而否定回答應(yīng)置于左側(cè) 。

          同樣接著上一個例子,當(dāng)問及“您是否要放棄編輯當(dāng)前的郵件”時,“放棄編輯”應(yīng)該置于右側(cè),而“繼續(xù)編輯”應(yīng)該置于左側(cè)。

          (3)對于APP內(nèi)或系統(tǒng)重要狀態(tài)的提示,不要給多余的按鈕而讓用戶費解。

          (4)最好不要在警示型對話框中放置諸如“了解更多”等第三個按鈕,因為它會將用戶引導(dǎo)至其他內(nèi)容而導(dǎo)致用戶中斷/忘記當(dāng)前對話框的操作。

          2. Simple Dialog

          簡易對話框用以展示用戶做即時決斷的選項,選項本身既是信息又是按鈕,不包含單獨的文案按鈕。

          一般用于多選其一且不用二次確認的場景,如:地區(qū)選擇、語言選擇郵箱地址選擇等。

          3. Confirmation Dialog

          確認對話框用于需要用戶進行選擇并手動確認的場景,不同于簡易對話框,用戶可以選擇一項或者多項,并且包含確認和取消按鈕。

          4. Full-screen Dialog

          全屏對話框包含一些列的操作任務(wù),這些操作任務(wù)可能需要用到鍵盤輸入并且還可能包含子對話框,典型的使用場景如:填寫表單、設(shè)置日程等。

          附上參考文獻的原文鏈接:

          Google Material Design— https://material.io/design/components/dialogs.html#usage

          iOS Human Interface Guidelines— https://developer.apple.com/ios/human-interface-guidelines/views/alerts/

          Android Developers— https://developer.android.com/guide/topics/ui/notifiers/toasts

          Modal window— https://en.wikipedia.org/wiki/Modal_window

          UIProgressHUD— http://iphonedevwiki.net/index.php/UIProgressHUD

          Toast(computing)— https://en.wikipedia.org/w/index.php?title=Toast_(computing)&oldid=459336160

          本文由 @ johnnylhj 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

          題圖作者提供

          、entity framework 相關(guān)類的理解。

          首先,House數(shù)據(jù)庫在映射后會生成一個名為HouseEntities的類,這個類我們稱之為數(shù)據(jù)上下文,可以簡單的理解為數(shù)據(jù)庫的部分映射(如果映射了全部的表,視圖,存儲過程,則可看作全部映射)。

          使用數(shù)據(jù)庫的時候,不需要像ADO.NET那樣,顯式的創(chuàng)建sqlconnection。sqlcommand,sqldataadapter,連接數(shù)據(jù)庫只需要創(chuàng)建一個數(shù)據(jù)上下文的實例即可,創(chuàng)建實例的過程,即可看作創(chuàng)建了數(shù)據(jù)連接。當(dāng)然,創(chuàng)建了連接是要關(guān)閉的,否則會增大連接池的負擔(dān)。因此,在entity framework中最常用using的方式來確保連接會被關(guān)閉。

           using (HouseEntities db=new HouseEntities())
           {//新建了一個數(shù)據(jù)上下文,它實現(xiàn)了IDisposable接口,使用USING可以確保其最終被dispose。如果不是用using,請在返回前主動調(diào)用db.Dispose(); 
           }
          

          上面的代碼新建了一個數(shù)據(jù)上下文對象,相當(dāng)于簡單的new了一個sqlconnection。然后con.open,con.close。期間沒有做任何操作

          數(shù)據(jù)上下文實例中,包含著所有表與視圖的映射,我們稱之為實體集,它是由db.House這樣的形式來進行調(diào)用的,可以簡單理解為數(shù)據(jù)表,而House類則是實體類,可以看作一條數(shù)據(jù)的實例化映射。這樣說可能會有點抽象,那下面我們將用一個例子來演示如何進行添加操作。

          二、entity framework 添加數(shù)據(jù)

           House house=new House()
           {
           Area=10.2m,
           Seller_ID=1,
           Floor=1,
           Street="南京路",
           Name="第一百貨商店",
           Price=99999.1m,
           Region="黃浦區(qū)"
           };
           using (HouseEntities db=new HouseEntities())
           {
           house=db.House.Add(house);
           db.SaveChanges();
           //db是數(shù)據(jù)上下文,House是數(shù)據(jù)實體類的一個集合,Add方法用于向上下文中添加實例,最后必須要經(jīng)過db.savingchanges()來進行數(shù)據(jù)存儲
           }
          

          上面的例子相當(dāng)于執(zhí)行了insert into House并給參數(shù)賦值的SQL命令,需要注意的是,在生成實體類對象的時候,必須要給所有非空字段賦值,哪怕你給這個字段指定過默認值,其次,就是在所有添加,修改,刪除操作的時候,必須要進行db.savingchanges(),這個方法會讓EF比較提取出的部分與數(shù)據(jù)庫之間的差異,并生成SQL語句完成修改。

          上面的話也許比較難以理解,總之,添加數(shù)據(jù)就是1.新建一個實體類的對象,2,新建一個數(shù)據(jù)上下文,把實體類對象附加到上下文,3.savingchanges來提交更改。

          如果我們需要知道添加是否成功,savingchanges時會返回受到影響的行數(shù),我們可以通過它來判斷是否執(zhí)行成功。

          如果我們需要添加多條數(shù)據(jù),可以在將所有實例都ADD進上下文之后在進行savingchanges,此時數(shù)據(jù)將會被一次提交。

          如果我們需要在本條數(shù)據(jù)添加成功后調(diào)取ID,在執(zhí)行完savingchanges后,可以直接以實體類對象.id的形式來直接調(diào)用。

          二、查詢數(shù)據(jù)

           /// <summary>
           /// 通過ID查找House
           /// </summary>
           /// <param name="id">House的ID</param>
           /// <returns>查找到的HOUSE</returns>
           public static House GetHouseByID(int id)
           {
           House house=null; //需要返回的house
           using (HouseEntities db=new HouseEntities())
           {
           house=db.House.Where(x=> x.ID==id).FirstOrDefault();
           //db是數(shù)據(jù)上下文,House是數(shù)據(jù)實體類的一個集合,where里是lambda表達式,進行查詢
           //最后的FirstOrDefault是取第一條或默認,如果取不到對應(yīng)條件的數(shù)據(jù)則會返回NULL
           }
           return house;
           }
          

          以上代碼就是根據(jù)id查詢單條數(shù)據(jù)的原生方法了,由于未對數(shù)據(jù)庫做任何更改,所以不需要進行savingchanges。

          在查詢時,雖然有first這樣的方法,但我們?nèi)耘f應(yīng)該堅持使用firstordefault來確保查詢條件不會引發(fā)錯誤。

           /// <summary>
           /// 通過地區(qū)查找Houses
           /// </summary>
           /// <param name="region">House所在區(qū)域</param>
           /// <returns>查找到的HOUSES</returns>
           public static List<House> GetHousesByRegion(string region)
           {
           List<House> houses=null; //需要返回的house列表
           using (HouseEntities db=new HouseEntities())
           {
           houses=db.House.Where(x=> x.Region==region).ToList();
           //查詢條件后跟ToList方法,就可以獲得指定條件下的數(shù)據(jù)表了
           }
           return houses;
           }
          

          上面的代碼,可以讓我們根據(jù)地區(qū)來查找房屋列表,返回的對象是一個泛型的List,可以簡單理解為ADO.NET中的dataTable,當(dāng)然,它也是可枚舉類型,所以,你仍舊可以直接將其綁定到GridView,Repeater,DropDownList等數(shù)據(jù)控件中。

          三、修改數(shù)據(jù)

          EF原生的數(shù)據(jù)修改需要一個特別的操作,attach,這個操作可以將某個新生成的對象附加到數(shù)據(jù)上下文中。

           /// <summary>
           /// 更新House
           /// </summary>
           /// <param name="house">House的實例</param>
           /// <returns>是否成功</returns>
           public static bool UpDateHouse(House house)
           {
           bool isComplete=false; //需要返回的bool
           using (HouseEntities db=new HouseEntities())
           {
           house=db.House.Attach(house);
           db.Entry(house).State=System.Data.Entity.EntityState.Modified;
           isComplete=db.SaveChanges() > 0;
           //對于無法驗證是否存在于映射中的實例,首先要進行attach操作,其次,為了保證update指令被執(zhí)行,我們還需要entry到這個數(shù)據(jù)上下文的實例匯中,把它的狀態(tài)設(shè)置為已修改
           }
           return isComplete;
           }
          

          上面的方法可以確保數(shù)據(jù)會被修改,但我們?nèi)孕枳⒁?,如果傳入的house與映射中的house相比毫無變化的話,受影響行數(shù)仍舊為0,提示將會是修改失敗,這點與ADO.NET有明顯差異。

          四、刪除數(shù)據(jù)

           /// <summary>
           /// 通過ID刪除House
           /// </summary>
           /// <param name="id">需要刪除的house的ID</param>
           /// <returns>是否執(zhí)行成功</returns>
           public static bool DeleteHouseByID(int id)
           {
           bool isComplete=false; //是否執(zhí)行成功
           using (HouseEntities db=new HouseEntities())
           {
           var house=db.House.Where(x=> x.ID==id).FirstOrDefault();
           //首先查詢需要刪除的house
           db.House.Remove(house);
           //然后執(zhí)行remove方法,將對象從映射中移除
           isComplete=db.SaveChanges() > 0;
           }
           return isComplete;
           }
          

          刪除數(shù)據(jù)的時候,首先需要查找相對的對象,之后從映射中移除,最終進行savingchanges。

          以上就是EF最基本的增刪改查了,其中的刪除,修改操作與ADO.NET相比,不僅代碼有差異,思想上也有不小的出入,需要多加理解才能運用自如。


          主站蜘蛛池模板: 在线免费视频一区| 精品一区二区三区影院在线午夜| 熟妇人妻AV无码一区二区三区| 国产一区三区三区| 在线观看免费视频一区| 制服中文字幕一区二区| 国产成人精品无码一区二区| 亚洲一区中文字幕在线观看| 亚州AV综合色区无码一区| 婷婷亚洲综合一区二区| 国产99精品一区二区三区免费| 国模私拍一区二区三区| 国产乱人伦精品一区二区| 韩国资源视频一区二区三区| 国产99精品一区二区三区免费| 久久一区二区精品综合| 成人精品一区二区三区电影| 一区二区精品在线观看| 香蕉免费一区二区三区| 国模精品一区二区三区视频| 中文字幕一区日韩在线视频| 国产福利一区二区三区| 无码日韩精品一区二区人妻 | 人妻无码久久一区二区三区免费| 亚洲美女视频一区| 动漫精品专区一区二区三区不卡| 亚洲bt加勒比一区二区| 精品一区二区三区在线观看l | 国产一区二区精品尤物| 亚洲天堂一区二区三区| 国产成人综合精品一区| 在线精品亚洲一区二区| 精品视频一区二区| 国产伦精品一区二区三区免.费 | 亚洲色偷偷偷网站色偷一区| 国产一区二区三区在线观看影院| 亚洲av无码不卡一区二区三区| 在线视频一区二区日韩国产| 亚洲午夜精品一区二区| 国产成人精品一区二区三区| 亚洲AV无码一区二区三区久久精品|