前言:在上一篇博客中我們大致介紹了一下需要的准備工作,也就是一些自動屬性,隱式類型,匿名類等,下面我們通過建立一個簡單的例子來學習EF框架,直接進入主題吧:
1. 第一步:創建一個控制台應用程序,起名為EFDemo
2. 第二步:創建一個實體模型
(1)在EFDemo項目上面右擊選擇添加—新建項—在已安裝的選項中選擇數據—ADO.NET實體對象模型,如圖所示:
3. 與數據庫進行連接
(1) 單擊第二步建立的實體數據模型的添加按鈕,然后我們選擇從數據庫生成,如圖所示:
(2) 單擊下一步,然后如果我們以前沒有操作的話在這里將是為空的,然后我們單擊新建連接,建立一個數據庫的鏈接,然后選擇“是,在連接字符串中包含敏感數據”,如圖所示:
(3) 單擊下一步,選擇我們要生成實體框架對應的表,試圖或者存儲過程和函數,因為這里我只使用到了表,所以選擇表的選項就行了,如圖所示:
(4) 單擊完成,這數據庫自動幫我們生成了實體對象和實體類,然后可以看到我的解決方案EFDemo下面生成的東西和VS2010不相同,當然大致的使用還是沒有變化的,只是有一些細節變了
4. 第四步,EF的第一個使用-增加
(1) 添加如下代碼:
(2) 數據庫中添加了一條數據,如圖所示:
(3) 然后我們可以打開SQL Server2012數據庫,單擊工具—>SQL Server Profiler,打開工具,然后我們運行代碼,跟蹤可以看一下給我們生成的代碼是什么,如圖所示:
(4) 還可以使用初始化器來實現數據的添加信息,效果和上面的一摸一樣,代碼如圖所示:
5. 第五步,EF的第一個使用-修改
(1) 添加如下代碼,如圖所示
(2) 數據庫中修改語句如圖所示
(3) 在SQL Server Profiler中查看生成的SQL語句,如圖所示:
6. 第五步,EF的第一個使用-刪除
(1) 添加如下代碼,如圖所示
(2) 數據庫中修改語句如圖所示
(3) 在SQL Server Profiler中查看生成的SQL語句,如圖所示:
7. 第五步,EF的第一個使用-查詢
(1) 實現查詢的第一種方法 foreach循環
1)實現代碼如圖所示:
2)結果就不用展示了,在我這里已經實現了
3)查看SQL Server Profiler中生成的SQL語句,如圖所示:
(2) 實現查詢的第二種方法 Linq和List集合
1)實現代碼如圖所示:
2)查看SQL Server Profiler中生成的SQL語句,如圖所示:
(3) 實現查詢的第三種方法 Linq
1) 實現代碼如圖所示:
2)查看SQL Server Profiler中生成的SQL語句和上面的第二個區塊中的執行語句一樣,這里就不累贅了。
(4) 實現一個分頁的查詢
1) 實現代碼如圖所示:
2) 查看SQL Server Profiler中生成的SQL語句和上面的第二個區塊中的執行語句一樣
(5) 實現查詢的第五種方法 lambda
1) 實現代碼如圖所示:
2) 生成的SQL腳本在數據庫Profiler里面查看和下面寫的基本是一樣的。所以這里就不貼出來了,大家可以試一下
3)lambda表達式查詢部分列
var dataLambda = bjh.HKSJ_USERS.Where(c => c.ID > 100)
.Select(c => new { id = c.ID, Name = c.LoginName });
foreach (var item in dataLambda)
{
Console.WriteLine(item.id + "," + item.Name);
}
8. EF的執行效率
(1) 在我們.NET領域,會有很多人認為EF的效率不是很高,那是為什么呢?因為我們看到最后EF還是生成SQL語句來執行的,所以EF本身性能損失也就是對實體集合的修改,然后根據edmx的定義最終生成SQL語句這段時間浪費了CPU而已,而且EF還會自動幫助我們對SQL進行優化,所以EF的選擇還是挺不錯的,當然不能再非常大的項目使用,那樣才會表現出性能的問題。
完全是為了學習技術,歡迎大家多多交流!!謝謝拉!