history
在ef最初的版本中,作為乙個orm元件其通過edm(entity data model)檔案(裡面是一些xml)來配置資料庫與實體類之間的對映,實現資料進出資料庫的控制。
最初的版本中只支援database first,即由已有資料庫結構生成edm,繼而得到實體類。
後來ef在4.0版本起開始支援model first即先建立
edm,然後生成資料庫。
在4.1
版本開始,
ef迎來了最大的變化--開始支援
code first
模式,值得注意的是
code first
不是和database first
或model first
平級的概念,而是和
edm平級
的概念。
使用code first不再需要edm來維護實體與資料庫之間的對映關係,這個對映完全通過**來完成,並在程式開始執行時在記憶體中建立乙個對映模型,這也就是code first這個名稱中code的含義。
由於code first的魅力極大,edm檔案又存在不利於版本管理等天生缺陷,基本上處於乙個被拋棄的狀態。在ef7版本可能取消edm的支援,只保留code first。
使用code first一般都是先建立實體然後通過**配置實體到資料庫的對映,繼而生成資料庫(如果資料庫已存在,就不需要再生成資料庫,可以直接建立**對映模型),這也就是所謂的model first模式。當然code first也支援database first,通過工具由現有資料庫生成實體,及實體對映資料庫的**。
core
隨著code first一起出現的dbcontext和dbset類絕對可以稱得上ef的功能核心,其取代了之前的objectcontext和objectset類,提供了與資料庫通訊,管理記憶體中實體的重要功能。
dbcontext類
主要是負責與資料庫進行通訊,管理實體到資料庫的對映模型,跟蹤實體的更改(正如 這個類名字context所示,其維護了乙個ef記憶體中容器,儲存所有被載入的實體並跟蹤其狀態)。dbcontext中最常用的幾個方法如:
還有幾個次常用但很重要的屬性方法:
dbset類
這個類的物件正是通過剛剛提到的set方法獲取的物件。其中的方法都與操作實體有關,如:
dbcontext類, dbset,
該派生類具有乙個或多個dbset類的屬性,型別dbset中的每乙個t代表了乙個想要持久儲存的物件。
publicclass
musicstoredb : dbcontext
{ public dbset<album> albums {get; set;}
public dbset<blog> blogs {get; set;}
}
Entity Framework 架構簡介
當微軟的wcf 大行其道,通用資料訪問模型entity framework卻稍遜一籌,有很多需要完善和進步的地方,本文對entity framework 架構做一下簡介。實體框架 entitry framework 以下簡稱ef 看起來像乙個有趣的技術,更強大,比linq to sql 更先進。這兩...
entity framework 批量刪除
以前用sql寫批量刪除的時候,感覺挺利索的,簡潔地寫了 public bool delectusersuggest string addsql 然後在頁面層直接呼叫 現在用entity framework,感覺有點麻煩不能直接delete,還要先把資料查出來,以下是主要 1 先查出實體 region...
Entity Framework 動態查詢
不想多說什麼直接說 region 搜尋並分頁 ljy 傳入搜尋條件,當前頁碼,每頁的顯示的條數,資料的總數 輸出引數 三個引數,返回 商實體 搜尋條件 當前頁碼 每頁的顯示的條數 資料的總數 public iqueryable endregion 在頁面呼叫時如果通過時間來查詢,請記住一定要這樣寫 ...