位置:首頁 > 其他技術 > LinQ教學 > LINQ實體

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 - Entities

使用LINQ實體模型添加,更新和刪除示例

首先添加實體模型按以下步驟。

  • 步驟 1: 右鍵單擊項目,然後單擊添加新項目將打開的窗口中按如下。選擇ADO.NET實體數據模型,並指定名稱,然後單擊添加。

    LINQ - Entity Model
  • 步驟 2: 選擇從數據庫生成。

    LINQ - Entity Model
  • 步驟 3: 選擇數據庫連接。

    LINQ - Entity Model
  • 步驟 4: 選擇所有表

    LINQ - Entity Model

現在寫下麵的代碼。

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();
     }
  }
}

讓我們編譯和運行上麵的程序,這將產生以下結果:

LINQ - Entity Model Result