Entity Framework 4.1/4.3 之二(前輩Entity Framework4.0)
大家好,上個星期太忙了,忙著做定價子系統,沒有時間來寫Entity Framework 4.1 之二文章,以至於之前的思路突然間斷了。剛才泡了杯tea細細的想了想,決定從前輩講起。接下來我來講講Entity Framework 4.0的執行個體,然後慢慢過度到Entity Framework 4.1的執行個體。這樣對比較強些。
寒暄過後,我們開工。
一,先建立解決方案 (名稱:EFProject)
我習慣建立控制台應用程式。然後建立好多層。有資料層,介面層,業務層,Model層,Helper層,展示層等等。今天為了講解方便,我直接就調用資料層了。
1、資料層開建 (先建 Entity Data Model (EDM),在之一裡有介紹,它是資料模型與資料庫中表的因映射)
右擊你要存放EDM的檔案(我的檔案夾叫DBEntity),添加 -> 建立項 ,選擇ADO.NET 實體資料模型,命名為EFEntity,點擊確定,歐了,EDM建立完畢。
切記要命名啊,命我為EFEntity,然點擊“添加”,會出現如的“實體資料模型嚮導”:
點擊下一步在新出現的頁面中,點擊“建立連線按鍵”:會出現 串連屬性 設定視窗,在這裡將設定EDM映射的資料庫。
點擊確定後,出現實體資料模型嚮導,如:
記得在“將App.Config 中的實體串連設定另存新檔(S)” 下的文字框內也改為"EFEntity"。其實際的做用是在App.config中會增加一條以EFEntity命名的資料庫連接字串。點擊 “完成”,如出。
選好要映射的表,這裡要重點強調一下" 模型命名空間(M):" 可以到在圖中我填的是EFEntity,這樣是不對的,因為EDM的名稱已經叫做EFEntty了,所以相對應該的映射模型的命名空間就不能再叫EFEntity,否則會出現命名空間衝突。這裡我們改成EFModel。點擊完成,我們的EDM模型就真正的完成了。是不是很簡單。別光看,動手行動起來吧。
等等,讓我們來看看產生的EDM長什麼樣吧,雙擊EFEntity.edmx,會進入到模型瀏覽器中。如所示:
這裡有 TestEntity和TestEntitySchool 兩個模型,分別是對資料庫中TestEntity和TestEntity
2、好了,有了EDM了,我們是時候操作它來對資料庫做增刪改查了。動手
View Code
1 public List<TestEntity> GetTestEntity() 2 { 3 using (EFEntity db = new EFEntity()) 4 { 5 6 var query = from m in db.TestEntity 7 select m; 8 9 if (query != null)10 return query.ToList();11 else12 return null;13 }14 }
這個方法是從TestEntity 表中擷取所有的資料,EFEntity 就是我們之前定義的edm,TestEntity就是對資料庫TestEntity的映射。
我們沒有專門建立一個Model來做為TestEntity載體,而是直接用模型TestEntity本身來做為我們的載體,這樣做有好處也有壞處,如果項目工期短的話,功能本身非常單一併且相對簡單的話,不妨可以考慮這麼做,比如,提供學校列表,老師列表等等單一功能的情況下較好,如果設及到多表關聯的話,這樣做非常不好。
這種做法沒有實現資料與展示分離,而且擴充起來不方便。所以常用的做法是在建立一上Model模型,比如我會建立一個TestEntityM來做為TestEntity的表一。當然命名可以自己去命名。
大家先別顧忌這種上面說的,先動手練習一下。示列中的代碼顯示了“查的功能”,我拋磚引玉一下,提代以下幾行代碼,大家試著根據這幾行代碼來寫寫“新增”和“編輯的”功能。至於輸出,你可以通過控制台來Console.WriteLine方式輸出,也可以通過網頁的行式顯示。
提示代碼如下:
(1)
View Code
1 public int EditEntity(TestEntity tsEntity) 2 { 3 int result = 0; 4 using (EFEntity db = new EFEntity()) 5 { 6 var query = (from m in db.TestEntity 7 where m.email == tsEntity.email 8 select m).FirstOrDefault(); 9 10 if (query == null)11 {12 //這裡是新增13 query = new TestEntity();14 //15 // 這裡你寫你的代碼16 //17 db.AddToTestEntity(query);18 result = db.SaveChanges();19 }20 else21 {22 //好了,你來寫編輯23 }24 }25 26 return result;27 }
也不知道您有沒有去練習。實踐了的朋友們,留個言吧。
說實話,寫部落格真不是件容易的事,寫系列部落格更不是件容易的事。堅持,得堅持啊。
好了,就寫到這裡,我會對自己寫的部落格不斷的更新,以便大家更容易理解和閱讀。今天就寫到這裡了,累了。我是jerry百靈,文章中有什麼不對的地方,不吝指教。
補充:本文講了EF4.1的前輩,也就是EF4.0版,它是伴隨著.Net Framework 3.5 出現的。之所以我們要採用ORM方式來編程,是為了更好的將注意力集中在編程上,而不用分散到資料庫上。當然早期的EF,也就是EF4.0 之前,我們還需要先設計資料庫,設計表,但是在EF4.1 裡,推出一Code First (即代碼先行),我們可以先構建對象及對象間關係。這裡的對象你把它理解成資料庫中的表這樣更好理解些,事實上它也卻實是對錶的映射。把精力集中在業務解決上,這樣不是更好嗎?
百靈註:本文著作權由百靈和部落格園共同所有,轉載請註明出處。
助人等於自助! mbailing@163.com