LINQ TO SQL


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.

One thought on “LINQ TO SQL

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s