Linq to SQL 是 LINQ 家族中操作關聯式資料庫的核心元件,核心組件為 System.Data.Linq.dll,入口點為 DataContext 類別。它採用侵入式映射 (Attribute),將實體類別與資料表對應。
[Table(Name = "Users")]
public class User
{
[Column(IsPrimaryKey = true)]
public int UserId { get; set; }
[Column]
public string UserName { get; set; }
[Column]
public string Password { get; set; }
[Column]
public string BlogName { get; set; }
[Column]
public Role Role { get; set; }
}
[Table]:對應資料表,Name 若與類別名同可省略[Column]:對應欄位,屬性名與欄位名同可省略 NameIsPrimaryKey:標記主鍵DataContext dbContext = new DataContext(connectionString);
dbContext.Log = Console.Out; // 輸出生成的 SQL,利於除錯與優化
Table<User> users = dbContext.GetTable<User>();
var result = from user in users
where user.UserName.StartsWith("yu")
select user;
foreach (var u in result)
Console.WriteLine(u.UserName);
Table<T> 實作 IEnumerable<T>,支援標準查詢運算子dbContext.Log 可攔截生成 SQL,即時觀察效能DbCommand/DbConnectionLinq to SQL 雖僅支援 SQL Server,但開源專案 DbLinq 已擴充支援 MySQL、Oracle、PostgreSQL、SQLite 等。後續文章將深入探討進階映射、關聯載入、效能調優等主題。