LINQ實體
作爲ADO.NET實體框架的一部分,LINQ到實體比LINQ到SQL更靈活,但由於其複雜性和缺乏關鍵功能沒有太大的普及。但是,它沒有LINQ的限制SQL允許數據查詢,只能在SQL服務器數據庫LINQ到實體中查詢大量數據,如Oracle,MySQL等資料提供方便數據查詢
此外,它已經得到了在這個意義上,用戶可以使用一個數據源控件執行通過LINQ到實體查詢,結果沒有任何需要額外的編碼有利於結合從ASP.Net支持。
LINQ到實體具有這些優點成爲了標準機制,LINQ對數據庫的使用。另外,也可以與LINQ實體來改變查詢的數據的信息和容易批量更新。最有趣的是有關LINQ到實體具有像SQL相同的語法,甚至有同組標準查詢運算符,如加入,選擇,排序等等。
LINQ 到Entities查詢的創建和執行過程
- 建設一個ObjectQuery的實例ObjectContext(實體連接)
- 通過使用新建成的情況下構成C#或Visual Basic(VB)查詢
- 轉換LINQ的標準查詢操作符,以及LINQ表達式到命令樹
- 執行直接傳遞到遇到客戶端任何異常查詢
- 返回到客戶機的所有查詢結果
ObjectContext是這裏的主類,使與實體數據模型或換句話說相互作用充當連接LINQ到數據庫的橋. 命令樹是這裏與實體框架兼容的查詢表示。 實體框架,另一方面實際上是對象關係映射器一般簡稱ORM,由做業務對象的產生,以及實體按照數據庫表,便於各種基本操作,如創建,更新,刪除和讀取。
下面是一個圖表實體框架到更好地瞭解這一概念的。
使用LINQ實體模型添加,更新和刪除示例
首先添加實體模型按以下步驟。
步驟 1: 右鍵單擊項目,然後單擊添加新項目將打開的窗口中按如下。選擇ADO.NET實體數據模型,並指定名稱,然後單擊添加。
步驟 2: 選擇從數據庫生成。
步驟 3: 選擇數據庫連接。
步驟 4: 選擇所有表
現在寫下面的代碼。
using DataAccess; using System; using System.Linq; namespace LINQTOSQLConsoleApp { public class LinqToEntityModel { static void Main(string[] args) { using (LinqToSQLDBEntities context = new LinqToSQLDBEntities()) { //Get the List of Departments from Database var departmentList = from d in context.Departments select d; foreach (var dept in departmentList) { Console.WriteLine("Department Id = {0} , Department Name = {1}", dept.DepartmentId, dept.Name); } //Add new Department DataAccess.Department department = new DataAccess.Department(); department.Name = "Support"; context.Departments.Add(department); context.SaveChanges(); Console.WriteLine("Department Name = Support is inserted in Database"); //Update existing Department DataAccess.Department updateDepartment = context.Departments.FirstOrDefault(d =>d.DepartmentId == 1); updateDepartment.Name = "Account updated"; context.SaveChanges(); Console.WriteLine("Department Name = Account is updated in Database"); //Delete existing Department DataAccess.Department deleteDepartment = context.Departments.FirstOrDefault(d =>d.DepartmentId == 3); context.Departments.Remove(deleteDepartment); context.SaveChanges(); Console.WriteLine("Department Name = Pre-Sales is deleted in Database"); //Get the Updated List of Departments from Database departmentList = from d in context.Departments select d; foreach (var dept in departmentList) { Console.WriteLine("Department Id = {0} , Department Name = {1}", dept.DepartmentId, dept.Name); } } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); } } }
讓我們編譯和運行上面的程序,這將產生以下結果: