1) LINQ TO SQL là gì ?
- LINQ là viết tắt của từ Language – Integrated Query tạm dịch là ngôn ngữ tích hợp truy vấn.
- LINQ to SQL là một phiên bản hiện thực hóa của O/RM (object relational mapping) có bên trong .NET Framework bản “Orcas” (nay là .NET 3.5), 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.
Sau đây, để hiểu rõ hơn về vấn đề, ta thực hiện một ví dụ tạo Linq to Sql trong Visual Studio 2010 để thực hiện việc truy vấn CSDL.
2) Chương trình DEMO :
- Bước 1: Tạo cơ sở dữ liệu cho chương trình:
Nhấp chuột phải vào Project -> New item -> Local Database -> Name: DatabaseDeal.sdf-> Add.
Sau khi tạo xong, hệ thống sẽ tao ra 2 file :
- DatabaseDeal.mdf
- DatabaseDealDataSet.xsd
- Bước 2: Tạo LinqToSql
Nhấp chuột phải -> New item -> LINQ to SQL Classes -> Name : Data_LinqToSql.dbml -> Add.
Tiếp theo, ta lấy kéo thả các table trong database vào Data_LinqToSql.dbml như hình sau:
Lúc này thì các thành phần trong bảng sẽ tự động ánh xạ, và các đối tượng này được tự động tạo ra trong file Data_LinqToSql.designer.cs để ta có thể truy vấn.
Bây giờ ta có thể truy vấn cơ sở dữ liệu bằng sql đơn giản như sau:
- Lấy các đối tượng customer trong data:
// Linq
Data_LinqToSqlDataContext data = new Data_LinqToSqlDataContext();
// Select all customers
IEnumerable<Customers> customers = from c in data.Customers
select c;
// Make datatable
DataTable dt = new DataTable();
// item of customers
string user = "", pwd = "", email = "";
dt.Columns.Add("Username");
dt.Columns.Add("Password");
dt.Columns.Add("Email");
// Add value to dt
foreach (var item in customers)
{
user = item.Username;
pwd = item.Password;
email = item.Email;
dt.Rows.Add(user, pwd, email);
}
// Bind to Gridview
dataGridView_Customers.DataSource = dt;
- Sửa (Edit) đối tượng:
// Linq Data_LinqToSqlDataContext data = new Data_LinqToSqlDataContext(); Customers customer = data.Customers.Single(c => c.Username == "user2"); customer.Password = "New1234567890"; customer2.Email = "Newuser2@gmail.com"; data.SubmitChanges();
- Thêm (Insert) đối tượng vào data:
// Add new Customer to data
Customers newCustomer = new Customers();
newCustomer.Username = "user4";
newCustomer.Password = "1234567890";
newCustomer.Email = "user4@gmail.com";
// Add
try
{
data.Customers.InsertOnSubmit(newCustomer);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
// Submit to data
data.SubmitChanges();
}
- Xóa (Delete) đối tượng khỏi data:
// Select a object Customer
IEnumerable<Customers> customer = from c in data.Customers
where c.Username.Contains("user1")
select c;
try
{
data.Customers.DeleteAllOnSubmit(customer);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
data.SubmitChanges();
}
- Lấy các đối tượng dùng cho phân trang: sử dụng Skip() – Take()
Data_LinqToSqlDataContext data = new Data_LinqToSqlDataContext(); // Lấy 3 đối tượng từ vị trí số 5 IEnumerable<Products> products = (from p in data.Products select p).Skip(5).Take(3);
- Một chức năng khác, để có thể lấy tập con các thuộc tính của đối tượng cần thiết đó là “data shapping” của LINQ.
var product = from p in data.Products
where p.Price > 200000
// chỉ lấy 2 đối tượng id và name của Product
select new
{
ID = p.IdProduct,
Name = p.NameProduct,
// Có thể tạo thuộc tính mới cho Product
SumPrice = p.Price /2
};
// Duyệt các đối tượng
foreach (var item in product)
{
string idProduct = item.ID;
string nameProduct = item.Name;
int sumPrice = item.SumPrice;
}
=> LINQ to SQL đủ thông minh để có thể chuyển biểu thức LINQ ở trên thành câu SQL.
Tóm lại,trong bài viết này, tôi cũng đã trình bày các thao tác xử lý dữ liệu bằng LINQ to SQL, bao gồm:
+ Thêm
+ Xóa
+ Sửa
+ Và một số các tính năng khác.



Pingback: TỔNG QUAN VỀ LINQ | Welcom to Xi-trum blog ~.^ !!!