多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > htmlcss > EF

EF

來源:程序員人生   發布時間:2015-03-21 09:13:45 閱讀次數:4591次

EF作用
    ADO.NET的連接層和斷開連接層提供了1個架構,可以通過連接、命令、數據讀取器、數據適配器和dataset對象來進行查詢、插入、更新和刪除數據等操作。雖然這是1個10分優秀的架構,但他還是會迫使我們以1種與物理數據庫結構緊耦合的方式來處理數據。例如在使用連接層時,我們通常在數據讀取器中指定列名來便利每天記錄。而如果使用斷開連接層,則將會對dataset容器中的datatable對象的行列集合進行遍歷
    如果在斷開連接層中使用強類型的dataset或數據適配器,那末帶來的編程方面的抽象性是很有幫助的。首先,強類型的dataset使用類的屬性來表示表數據。其次,強類型的表適配器支持封裝了構造底層SQL語句的方法。

相比更新數據庫時使用1些SQL查詢來查找、更新,再將其發送回數據庫進行處理,使用ef可以簡單地修改對象的屬性,并保存其狀態。ef在運行時將自動更新數據庫
實體的作用
    前面說到強類型類成為實體。實體是將無力數據庫映照到業務領域的概念模型。這類模型的正式名稱為實體數據庫模型(EDM)。它是1組映照到無力數據庫的客戶端類,但是這些實體沒有必要與數據庫架構的命名約定完全1致。你完全可以根據需要調劑實體類,ef運行時將把這些唯1的名字映照到正確的數據庫架構。
    (大多數情況,客戶端實體類的名稱都與關系型數據庫表名相同。但你總是可以修改它的名稱使其與業務環境更符合)
EF基礎:
    EF API 和其他的ADO.NET 交互方式1樣,ef使用1個ado.net 數據提供程序來與數據存儲進行交互。所不同的是,在恩你個狗與ef api 交互之前,必須更新數據提供程序使其支持新的服務。除微軟SQLserver數據提供程序增加了必要的內容之外,system.data .entity .dll 程序集還包括了各種命名空間來解釋EF服務本身。EF API的兩個關鍵部份為 對象服務 和 實體客戶端。
    對象服務的作用:
        對象服務是ef的1部份,他在代碼中對客戶端進行控制。例如,對象服務跟蹤你會實體的更改、管理實體間的關系并提供將更改保存到數據庫的方法,和用xml或2進制序列化服務隊實體狀態進行持久化的方法。
        就編程而言,對象服務層對所有擴大entityObject積累的類進行管理
    實體客戶真個作用:
        EF API 的另外一個主要部份是實體客戶端層,她使用基本的ado.net 數據提供程序來建立數據庫連接、基礎實體狀態和linq 查詢生成sql語句、將數據庫數據映照到實體,和處理其他其他在不使用ef經常見的細節問題。
*.edmx文件的作用
   為了使entityframework api能夠將實體類數據正確映照到數據庫表數據,你需要定義適當的映照邏輯。在所有的數據模型驅動的系統中,實體、真實的數據庫和映照層都會被劃分為3個相干的部份:概念模型、邏輯模型和物理模型。
    概念模型:實體和她們呢之間的關系
    邏輯模型:將實體和關系(通過外鍵束縛)映照到表
    物理模型:通過指定的存儲細節(如表架構、表分割和索引)來表示特定的數據引擎的能力。
在ef中,這3層均寄存在基于xml格式的文件里。當使用vs集成的ef設計器時,會得到1個以*.edmx 為擴大名的文件(EDM為entity data model)。該文件包括實體、物理數據庫的xml描寫,并且介紹了如何在概念模型和物理模型之間映照這些信息。
    當使用visual studio編譯基于EF項目時,*.edmx 文件將生成3個獨立的文件:用于概念模型數據的*.csdl 、用于物理模型的*.ssdl 和用于映照層的*.msl .然后這3個基于xml的文件將以2進制資源的情勢綁定到利用程序中。編譯以后,.NET 程序集中將包括代碼庫中所調用的ef api的所有必要的數據。
ObjectContext和ObjectSet <T>類的作用
    ef的最后1個難點是objectContext類,它是system.Data .Objects 命名空間的1員。在生成*.emdx 文件時,你將得到映照到數據庫表的實體類和1個繼承自ObjectContext的類。該類通經常使用于對象服務與實體客戶端之間的交互。
    ObjectContext為自雷提供了大量的核心服務,包括保存所有更新的功能(用于數據庫更新)、調劑連接字符床、刪除對象、調用存儲進程、處理其他底層細節。
    ObjectContext的派生類作為1個容器,管理那些存儲在ObjectSet<T>集合中的實體對象。
匯總
    上圖創建的場景:對上下文的實體編寫了1個Linq查詢,該查詢被傳遞給對象服務,對象服務將linq命令轉換為實體客戶端可以理解的樹。然后,實體客戶端將樹轉化為ADO.NET提供程序的SQL語句。提供程序返回1個數據讀取器(如1個D不DataReader的派生對象),客戶端服務使用該讀取器(EntityDataReader)將數據傳入對象服務。終究C#代碼庫所得到的是實體數據庫的枚舉(IEnumberable<T>)。
    還有1種情況,如果你的C#代碼庫希望對客戶端服務創建的發送到數據庫的SQL語句進行更多地控制,你可以編寫C#代碼直接將Entity SQL傳遞給實體客戶端或對象服務。終究得到的也是1個IEnumberable<T>。
    這兩種情況下,你都必須使得客戶端服務理解*.edmx文件中的xml數據,即如何將數據庫院子映照到實體。最后要記住的是,客戶端(C#代碼庫)還可使用EntityDataReader直接從實體客戶端獲得數據。
        
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 手机福利在线观看 | 国产精品日韩一区二区三区 | 性高湖久久久久久久久aaaaa | 波多野吉衣在线多野结衣 | 天天综合在线观看 | 亚洲成人一级片 | 波多野结衣三区 | 欧美一级毛片激情 | 成人毛片国产a | 蜜中蜜3动漫无修在线播放 免费 黄 色 人成 视频 | 岛国福利视频 | 国产95在线 | 亚洲 | 日韩国产欧美 | 国产女人18一级毛片视频 | 午夜免费啪在线观看视频网站 | 亚洲乱仑 | 成人小视频在线 | 国产a久久精品一区二区三区 | 性欧美17一18sex性高清播放 | 欧美美女free| 国产视频久久 | 国产成人精品视频一区二区不卡 | www久久com | 被男人吃奶添下面好舒服视频 | 性色xxx| 男女激情视频在线观看 | 亚洲精品国产第一区二区多人 | 欧美韩国 | 自拍偷拍欧美亚洲 | 日韩欧美二区 | 最近中文字幕mv手机免费高清 | h 在线播放| 国产精品亚洲综合 | 亚洲最大的视频网站 | 精品国产精品 | 在线观看欧洲成人免费视频 | 老司机福利在线观看 | 91精品一区二区三区在线 | 秋霞一级| 国产在线原创剧情麻豆 | 欧美人与动性视频在线观 |