1. 程式人生 > >初次見面 你好EF

初次見面 你好EF

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                        EF(yif),第一次聽到這個名字的時候,以為是一個帥帥的魔術師,在小編的傻傻的夢想裡,就是有一天,有一個魔術師站在小編面前,變出一大捧的玫瑰花,然後,然後不要錢`(*∩_∩*)′,然而在我們的程式設計世界裡,也存在著同樣神奇的魔術,今天小編就簡單的總結一下關於EF的相關知識,然後舉例說明。首先,我們來了解一下EF,百度百科對EF這樣進行闡述:
        ADO.NET Entity Framework 是微軟以 ADO.NET 為基礎所發展出來的物件關係對應 (O/R Mapping) 解決方案,早期被稱為 ObjectSpace,現已經包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中發表。在小編的理解中EF是以.NET為基礎,面向資料的實體框架,它利用了抽象化資料結構的方式,將每個資料庫物件都轉換成應用程式物件 (entity),資料欄位都轉換為屬性 (property),關係則轉換為結合屬性 (association),讓資料庫的 E/R 模型完全的轉成物件模型,如此讓程式設計師能用最熟悉的程式語言來呼叫訪問。而在抽象化的結構之下,則是高度整合與對應結構的概念層、對應層和儲存層,以及支援 Entity Framework 的資料提供者 (provider),讓資料訪問的工作得以順利與完整的進行。簡單來說讓上層的應用程式碼可以如面向物件的方式般訪問資料。

       接著小編以增,刪(改)查詢為例,簡單介紹一下EF的使用。從建立專案開始:

       第一步:點選新建專案;

        

        第二步:選擇控制檯應用程式,並命名;

        

        第三步:新建一個EFDemo之後, 右擊新增新建項;

        

       第四步:選擇ADO.NET實體資料模型,如果有的小夥伴沒有這個選項的話,表明你裝的VS不是很完整,需要重新安裝哦。

        

       第五步:選擇資料模型時,因為小編之前已經在資料庫中建立好表了,所以我們這裡先選擇從資料庫生成(即DB First),如果選擇空模型,就可以在沒有建立資料庫的情況下,通過先建立實體模型來生成實體類和資料庫表。空模型是什麼意思nie,小編來簡單的介紹一下,選擇空模型即在沒有建立資料庫的情況下,先建立實體模型,再根據實體模型生成資料庫。

        

        第六步:連線資料庫連線,因為小編的資料庫裡面有資訊,所以下面有相應的顯示,如果小夥伴你的資料庫裡面沒有資訊,這個時候你就需要點選新建連線,如下圖:

         

         第七步:點選新建連線,出現如下介面,根據藍色字型的提示,一一填寫好即可。

         

          第八步:點選測試連線,出現如下成功介面:

          

         第九步:點選確定之後,出現如下介面,這個時候,我們的應用程式與某個資料庫進行連線已經自動匹配好了。注意因為連線字串將會儲存到配置檔案中,所以在這裡要選擇“是,在連線字串中包括敏感資料”。

         

         第十步:選擇實體框架。

         

         第十一步:選擇我們想要生成實體的表。

         

        第十二步:一切都完成後,如下圖,edmx就已經根據我們所選的資料庫表生成了相應的實體,同時,在解決方案資源管理器中的T4模板Model.tt下還為自動我們生成了category、news、comment實體類。

        

        至此,我們的edmx檔案就已經建立完成了,程式碼如下所示:

        

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx"> <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->  <edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">    <!-- Diagram content (shape and connector positions) -->    <edmx:Diagrams>      <Diagram DiagramId="a316256819df4b09862e85b379889e0e" Name="Diagram1">        <EntityTypeShape EntityType="newssystemModel.category" Width="1.625" PointX="0.5" PointY="0.625" IsExpanded="true" />           <EntityTypeShape EntityType="newssystemModel.comment" Width="1.5" PointX="4.625" PointY="1" IsExpanded="true" />        <EntityTypeShape EntityType="newssystemModel.news" Width="1.5" PointX="2.75" PointY="0.5" IsExpanded="true" />        <AssociationConnector Association="newssystemModel.FK_news_category" ManuallyRouted="false" />        <AssociationConnector Association="newssystemModel.FK_comment_news" ManuallyRouted="false" />      </Diagram>    </edmx:Diagrams>  </edmx:Designer></edmx:Edmx></span>
       上述程式碼中,第一部分為edmx:Runtime關係用以自動生成實體類、對映、屬性等cs程式碼,是接下來要重點分析的內容Designer部分是由設計器使用的,包含了圖的佈局等資訊,接著,我們開始進行程式碼部分,做一個簡單的例子,程式碼如下所示:

<span style="font-size:18px;"><span style="font-size:18px;">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace EFDemo{    class Program    {                static void Main(string[] args)        {                        //所有對資料庫的操作第一就是建立資料庫訪問的上下文            newssystemEntities dbContext = new newssystemEntities();            #region 新增實體            category cate = new category();            cate.id = 29;            cate.name = "財經新聞";            dbContext.category.AddObject(cate);//代表往dbcontext指向的資料庫中的category表中新增一條資料category            dbContext.SaveChanges();// 真正的儲存到資料庫            #endregion                         #region  修改+刪除            category cate = new category();            //把上下文dbcontext跟蹤的例項:category的狀態改成修改狀態            dbContext.ObjectStateManager.ChangObjectState(cate, newssystemEntities.modified);            cate.id = 27;            cate.name = "IT";            //修改此實體            //第一步:將當前實體附件到上下文裡面進行管理            dbContext.category.Attach(cate);            //把上下文dbContext跟蹤的例項:category的狀態改成修改狀態            dbContext.SaveChanges();            // O  M   R            //ORM框架:幫助我們開發人員跟蹤實體的變化,並將屍體的變化翻譯成sql指令碼,並執行到資料中去,也就是將            //實體的變化對映到了表的變化            #endregion            #region 查詢            foreach (var cate1 in dbContext.category)            {              Console.WriteLine(string.Format("id:{0} name:{1}",cate1.id,cate1.name));                }            #endregion            #region  linq查詢            var item = (from b in dbContext.category                        where b.id == 24                        select b).SingleOrDefault();                                    foreach (var cate in item)            {                 Console.WriteLine(cate.id);            }            List<category> listResult = new List<category>();            foreach(var b in dbContext.category)            {                if(b.id==24)                {                    listResult.Add(b);                }           }            #endregion            Console.ReadKey();        }    }}</span></span>
         至此,小例子結束。

        小編寄語:該博文,小編主要簡單的介紹了一下有關於EF的基本知識,包括EF的核心edmx檔案,edmx大致由SSDL、CSDL、C-S三部分組成,分別對應著對於資料庫、實體、資料庫表與實體之間的對映這三方面的解析,SSDL中有對資料庫表、欄位等的規定,CSDL中有對實體名、實體屬性等的規定,C-S中有對資料庫表與實體之間的對映。總的來說edmx檔案就是用來解析儲存模型、概念模型以及這兩者之間的對映。學生檔案管理專案,未完,待續...... 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述