LINQ to SQL là một phiên bản hiện thực hóa của ORM(object relational mapping) có bên trong .NET Framework. Nó cho phép bạn mô hình hóa một cơ sở dữ liệu dùng các lớp .NET. Sau đó bạn có thể truy vấn cơ sở dữ liệu (CSDL) dùng LINQ, cũng như cập nhật/thêm/xóa dữ liệu từ đó.
LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP). Nó cũng cung cấp một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của dữ liệu và các quy tắc vào trong mô hình dữ liệu của bạn.
Mô hình LINQ to SQL ở trên định nghĩa bốn lớp thực thể: Product, Category, Order và OrderDetail. Các thuộc tính của mỗi lớp ánh xạ vào các cột của bảng tương ứng trong CSDL. Mỗi instance của một lớp biểu diễn một dòng trong bảng dữ liệu.
Mục đích ra đời của LINQ to SQL là để phục vụ cho hệ quản trị cơ sở dữ liệu SQL Server và nền tảng .NET nói chung hay ngôn ngữ lập trình C#/VB.NET nói riêng chứ không phải mục đích đại trà cho các ngôn ngữ lập trình hay các hệ quản trị cơ sở dữ liệu khác.
LINQ to SQL cung cấp giao diện trực quan về mối quan hệ các bảng dữ liệu sau khi được mô hình hóa. Các lớp DataContext sẽ được tạo ra tự động khi Import file LINQ to SQL vào Project.
Các lớp DataContext nhận nhiệm vụ mở kết nối đến cơ sở dữ liệu, thực hiện truy vấn hay thay đổi dữ liệu. Các lớp thuộc tính được mô hình hóa từ các bảng dữ liệu trong hệ quản trị cơ sở dữ liệu được truy cập thông qua các lớp DataContext.
Dù là một công cụ khá hay trên nền tảng .NET, LINQ to SQL vẫn có hạn chế như:
- Chỉ thao tác duy nhất với hệ quản trị cơ sở dữ liệu SQL Server.
- Chỉ có thể tự động tạo Data Model từ cơ sở dữ liệu chứ không có ngược lại.
- Chỉ cho phép ánh xạ 1:1 giữa các Table trong Database với các lớp Data Model
Cách tạo DataContext và kết nối cơ sở dữ liệu Microsoft SQL Server
1. Tạo một database Sql server trước.
Tạo ra database bao gồm 2 Table là SanPham, DanhMuc.
Cách tạo Store Procedure
create proc ThemSanPham
@ma int,
@ten nvarchar(50),
@dongia int,
@MaDM int
as
Insert into SanPham(Ma, Ten,DonGia,MaDanhMuc)
values (@ma, @ten, @dongia,@MaDM)
exec ThemSanPham @ma=2 , @ten=N’ Ti vi SoNY’, @dongia=14, @MaDM=1
go
create proc CapNhatGia
@ma int,
@DonGia int
as
update SanPham set DonGia =@DonGia where Ma=@ma
exec CapNhatGia @ma=1, @DonGia=50
go
create proc XoaSanPham
@ma int
as
delete from SanPham where Ma=@ma
exec XoaSanPham @ma=1