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