Entity Framework 4.1/4.3 之二(前輩Entity Framework4.0)


 

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                 else
12                     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                 else
21  { 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM