ASP .NET MVC 之Entity Framework入门教程及源码
本文主要的目的是
1. 說明Entity Framework Power Tools如何使用。
2. Entity Framework? 快速門
實驗環境:
OS: Windows Server 2012, Windows 7
DE: VS2013 + MVC 6.0+Entity Framework+ SQL Server 2012
準備工作
基于現有數據庫生成POCO數據類和數據庫上下文需要借助Visual Studio一個擴展插件-- Entity Framework Power Tools(一個Code First反向工程工具)。只要在Visual Studio擴展里面輸入“Entity Framework Power”搜索即可找到最新的擴展
?
?
點擊下載即可(如下圖)。當然你也可以到這里Entity Framework Power Tools Beta 3下載安裝包進行安裝。
在這里我們這里新建“School”數據庫,打開Microsoft SQL Server 2012的SQL Server Management Studio管理工具,新建”School”數據庫。
執行創建表的腳本,腳本路徑如下
http://msdn.microsoft.com/zh-cn/data/jj614587
?
然后我們創建一個控制臺應用程序,項目名稱為EFPowerToolsSample。
?
在使用EF power tool 之前,先安裝EntityFramewok,否則會出現奇怪的問題。
在項目引用右鍵彈出菜單選擇“管理NuGet程序包”
在彈出窗口鍵入Entity Framwork,并安裝。
?
?
反向工程生成POCO代碼
右鍵單擊項目,然后選擇“實體框架”–>“對 Code First 進行反向工程”。
輸入要根據其對 Code First 進行反向工程的現有數據庫的相關信息。
注意:這將對數據庫中的所有表進行反向工程,因此如果不希望操作所有表,需要從模型中手動刪除不需要的表。
?
在彈出的窗口中輸入相關的數據庫連接信息即可
點擊高級,修改 Persist? Security Info 為 True。否則會出現錯誤
我們先看一下配置文件,可以看到在配置文件中Entity Framework Power Tools已經自動對數據庫連接串進行了配置,添加了名為“SchoolContext”的數據庫連接串:
在項目中我們還可以看到Entity Framework Power Tools自動創建了一個Models文件夾,這里除了“School”類還有所有的數據類。在Models文件夾下還有一個“Mapping”文件夾,這里放了數據類與數據庫的映射配置類,可以看出Entity Framework Power Tools通過fluent API的方式進行映射細節配置(目前Entity Framework Power Tools還不支持Data Annotations方式),關于配置類的具體細節我們這里暫不進行詳細介紹。
操作EF 進行基本的增刪改查
學習了如何通過工具生成代碼后,我們再學習一下如何使用EF進行最基本的增刪改查操作。
一般查詢
?
?
?
var Courses = db.Courses.Where(c => c.Title == "Physics").OrderBy(c => c.Title);foreach (var c in Courses){Console.WriteLine(c.Title);}添加
Models.Course model = new Course(); model.Title = "test"; model.DepartmentID = 1; model.CourseID = 4; db.Courses.Add(model); db.SaveChanges();修改
Models.Course model = new Course(); var result = (from r in db.Courses where r.Title.StartsWith("test") orderby r.Title descending select r).FirstOrDefault();model = (Course)result; model.Credits = 4; model.Title = "good job"; db.SaveChanges();刪除
var result = from r in db.Courseswhere r.CourseID == 4select r; foreach (var c in result){db.Courses.Remove(c);} db.SaveChanges();?
簡單的函數計算(count,min,max,sum)
var result = (from r in db.StudentGradeswhere r.StudentID == 2select r).Sum(p=>p.Grade); Console.WriteLine(result); var result = (from r in db.StudentGradeswhere r.StudentID == 2select r).Max(p => p.Grade);Console.WriteLine(result);?
分頁數據查詢
var result = (from r in db.Peopleorderby r.LastName ascendingselect r).Skip(5).Take(5); foreach(var c in result){Console.WriteLine(c.LastName);}?
分組group by
var ss = from r in db.StudentGradesorderby r.StudentID descendinggroup r by new { r.StudentID, r.CourseID } into gselect new{g.Key,grade = g.Sum(r => r.Grade)}; foreach (var r in ss){string output = "StudentID:" + r.Key.StudentID + " CourseID:" + r.Key.CourseID+" grade"+r.grade;Console.WriteLine(output);}?
復雜的關聯查詢
var d = db.Database.SqlQueryForDynamic(@"SELECTc.CourseID,d.[Name] as department,c.Title FROMCourse c INNER JOIN Department d ON c.DepartmentID = d.DepartmentID");foreach (dynamic item in d){var s = item.Title; Console.WriteLine(s);} Console.ReadLine();歡迎加入企鵝群238473238交流
http://files.cnblogs.com/williamzhu/EFPowerToolsSample.zip
轉載于:https://www.cnblogs.com/williamzhu/p/4171901.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是默认站点為你收集整理的ASP .NET MVC 之Entity Framework入门教程及源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于内存的一些基础知识
- 下一篇: 斗地主你什么时候才会托管?(.NET中的