首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 入門 LINQ to SQL 實體類別手寫對應與基本 CRUD (1)

     編輯:關於ASP.NET

LINQ (Language Integrated Query) 為 .NET 提供統一查詢語法,解決不同資料來源(SQL、XML、記憶體集合)存取方式不一的問題。本文從零開始,手寫實體類別對應資料表,示範基本增刪改查操作。

LINQ 核心優勢

  • 語言整合:查詢語法為 C#/VB 原生關鍵字,編譯期檢查、IntelliSense 支援
  • 統一模型:相同查詢語法適用於 LINQ to Objects、LINQ to SQL、LINQ to XML 等
  • 型別安全:避免字串拼接 SQL 的注入風險與拼寫錯誤

必要命名空間

using System.Data.Linq;
using System.Data.Linq.Mapping; // 需參考 System.Data.Linq.dll

手寫實體類別對應 Employees 資料表

[Table(Name = "Employees")]
public class Employee {
    [Column(IsDbGenerated = true, IsPrimaryKey = true)]
    public int EmployeeID { get; set; }

    [Column(Name = "FirstName", DbType = "nvarchar(20)")]
    public string FirstName { get; set; }

    [Column(Name = "LastName", DbType = "nvarchar(20)")]
    public string LastName { get; set; }

    // 可加入其他欄位:Title, HireDate, City, Country 等
}

常用 Column 屬性說明

屬性用途
Name資料庫欄位名稱(若與屬性名不同)
DbType精確指定資料庫型別,如 nvarchar(50)
IsPrimaryKey標記主鍵欄位
IsDbGenerated標記 Identity / 自動產生欄位
CanBeNull允許 NULL 值
Storage指定私有備份欄位名,啟用延遲載入最佳化
UpdateCheck樂觀並行控制:Never / Always / WhenChanged

建立 DataContext 與基本操作

// 連接字串從 web.config 讀取
string connStr = ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;

using (var db = new DataContext(connStr)) {
    // 取得型別化 Table
    Table<Employee> employees = db.GetTable<Employee>();
    
    // --- 查詢 ---
    var londonEmps = from e in employees
                     where e.City == "London"
                     select e;
    
    // --- 新增 ---
    var newEmp = new Employee { FirstName = "Tom", LastName = "Chen" };
    employees.InsertOnSubmit(newEmp);
    db.SubmitChanges(); // 寫入 DB,newEmp.EmployeeID 回填自增值
    
    // --- 修改 ---
    var emp = employees.Single(e => e.EmployeeID == 1);
    emp.LastName = "Wang";
    db.SubmitChanges();
    
    // --- 刪除 ---
    var toDel = employees.Single(e => e.EmployeeID == 99);
    employees.DeleteOnSubmit(toDel);
    db.SubmitChanges();
}

DataContext 關鍵特性

  • 單位工作模式:追蹤所有異動,SubmitChanges() 時一次交易提交
  • 身分對應:同一 DataContext 內,相同 PK 只會有一個實體實例
  • 延遲載入:關聯屬性預設延遲載入,可用 DataLoadOptions.LoadWith 預先載入
  • 不安全執行緒:DataContext 非執行緒安全,請求範圍內建立、用完釋放

進階:無參建構函式搭配 web.config

public class NorthwindDataContext : DataContext {
    public NorthwindDataContext() : 
        base(ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString) { }
    
    public Table<Employee> Employees => GetTable<Employee>();
}

之後即可簡潔呼叫:

using (var db = new NorthwindDataContext()) { ... }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved