LinQ to SQL là gì?
LinQ có tên gọi là Language Integrated Query, một thư viện cung cấp cho ngôn ngữ lập trình C# và Visual Basic. Thư viện này cung cấp khả năng truy vấn database ngay trên ngôn ngữ lập trình. Khi sử dụng, LinQ sẽ mô phỏng lại cơ sở dữ liệu và lưu trong trương trình, sau đó mỗi entity sẽ được xây dựng thành mỗi class như mô hình MVC, từ đó có thể truy xuất database thông qua những class đó.
LinQ to SQL phù hợp với những dự án phần mềm như quản lý bán hàng, quản lý của hàng, nhân viên vì cung cấp khả năng tạo một database ngay trong SQL Server thông qua mô hình database mà LinQ to SQL được người lập trình cung cấp trong quá trình xây dựng sản phẩm. Rút ngắn đáng kể thời gian cho lập trình viên và dễ dàng cho người sử dụng cài đặt.
Cài đặt
Bước 1. Tạo một database có tên Member, trong database này gồm có 2 entity member và article.
Bước 2. Tạo một project C# → vào View chọn SQL Server Object Explorer
Bước 3. Chọn Add SQL Server và connect vào SQL Server trên máy, kết quả được một list các database.
Bước 4. Chọn Add → New Item → chọn LINQ to SQL Classes và đặt lại tên (trong ví dụ này đặt tên cho file là DBMember.dbml), một file có đuôi dbml được tạo ra. Chọn tất cả các table trong database muốn sử dụng kéo vào trong file dbml này. Kết quả như sau.
Tạo xong LinQ to SQL, các class có cùng tên với mỗi entity cũng đã được tạo ra.
Các thao tác sử dụng LinQ to SQL
Khởi tạo class DBMemberDataContext
, mọi việc truy xuất cơ sở dữ liệu đều thông qua class này.
Select
DBMemberDataContext db = new DBMemberDataContext(); var name = from table in db.members where table.idMember == 0 select table.Name; foreach(var a in name) { Console.WriteLine(a); }
Tạo một một biến tên table
và biến này chứa dựng tất cả dữ liệu có trong table member
.
Điều kiện là tìm tất cả những những member nào có idMember
bằng 0
, có thể lấy theo điều kiện khác tùy loại điều kiện có số lượng kết quả trả về khác nhau. Và cuối cùng là chọn field muốn trả về.
Vì kết quả trả về là mảng nên dùng foreach
để lấy tất cả dữ liệu trong đó.
Trong trường hợp trên chỉ có thể lấy được dữ liệu duy nhất đó là field name
.
DBMemberDataContext db = new DBMemberDataContext(); // khởi tạo var name = from table in db.members where table.idMember == 0 select table; foreach(var a in name) { Console.WriteLine(a.Name); Console.WriteLine(a.Address); }
Thay vì chỉ lấy được một field có thể lấy toàn bộ dữ liệu trong table thông qua điều kiện cho trước và sau đó truy xuất các field mong muốn.
Insert
DBMemberDataContext db = new DBMemberDataContext(); member mem = new member(); mem.idMember = 1; mem.Name = "stdio"; mem.Age = 22; mem.Address = "456 xyz"; db.members.InsertOnSubmit(mem); db.SubmitChanges();
Đoạn code trên dùng để insert
một dữ liệu vào database, trong trường hợp này xem nó như một đối tượng.
Trước tiên tạo ra một đối tượng member
và nhập dữ liệu vào các thuộc tính của nó.
Tiếp theo sử dụng db.members.InsertOnSubmit(mem);
để thêm đối tượng này vào nhưng đối tượng này hiện tại chỉ được thêm tạm thời vào DBMemberDataContext
nhưng chưa được cập nhật vào databate của SQL Server.
Vì vậy thêm dòng code db.SubmitChanges();
để đồng bộ tất cả các dữ liệu của project và SQL Server.
Update
DBMemberDataContext db = new DBMemberDataContext(); var members = from table in db.members where table.idMember == 0 select table; foreach (var mem in members) { mem.Address = "Tân Bình"; } db.SubmitChanges();
Đoạn code này sẽ truy vấn đến database để tìm những member
nào có idMember
bằng 0
và sau đó thay đổi giá trị trong field Address
, cuối cùng là đồng bộ lại dữ liệu.
Delete
DBMemberDataContext db = new DBMemberDataContext(); var members = from table in db.members where table.idMember == 0 select table; foreach (var mem in members) { db.members.DeleteOnSubmit(mem); } db.SubmitChanges();
Ví dụ này thực hiện việc delete
một đối tượng có trong members. Cũng như update
và insert
sau khi dòng code db.members.DeleteOnSubmit(mem);
được thực thi thì mới chỉ xóa được trên đối tượng trên DBMemberDataContext
.
Vì vậy dùng db.SubmitChanges();
để cập nhật lại dữ liệu trên SQL Server.