Đào Hải Nam

Luôn hạnh phúc vì vẫn còn nhiều ước mơ chưa đạt được

Posts Tagged ‘linq

Cập nhật dữ liệu dùng Stored Procedure (LINQ to SQL phần 7)

without comments

Vài tuần trước tôi bắt đầu viết loạt bài về LINQ to SQL. LINQ to SQL là một bộ khung (framework) có sẵn cho O/RM (object relational mapping) trong .NET 3.5, nó cho phép bạn dễ dàng mô hình hóa các CSDL quan hệ dùng các lớp .NET. Bạn có thể dùng các biểu thức LINQ để truy vấn CSDL, cũng như có thể cập nhật/thêm/xóa dữ liệu từ đó.

Dưới đây là 6 phần đầu tiên của loạt bài này:

Trong phần 6 tôi đã nói tới cách chúng ta có thể dùng các Stored Procedure (SPROC) và các hàm do người dùng định nghĩa (UDF) để truy vấn và lấy dữ liệu về dùng mô hình dữ liệu  LINQ to SQL. Trong viết này, tôi sẽ nói về cách dùng các thủ tục này để cập nhật, thêm hoặc xóa dữ liệu.

Đọc tiếp »

Written by namdh

22/06/2009 lúc 17:04

LINQ tip #4: Dùng WHERE

with 3 comments

Khi xây dựng các form tìm kiếm với SQL, chúng ta vẫn thường phải xây dựng một chuỗi SQL với nhiều điều kiện trong WHERE, theo kiểu như:

string sql = "select * from Customers";
string where = "";
if (txtCustomerName.Text != "")
    where += String.Format("CustomerName = {0}", txtCustomerName.Text);
if (where != "")
    sql += " WHERE " + where;

MyDataGrid.DataSource = ... <kết quả trả về bởi câu truy vấn>

Trong LINQ, nếu muốn xây dựng một câu truy vấn LINQ kiểu như vậy, bạn có thể sử dụng câu lệnh Where() kết hợp với biểu thức LAMBDA, với ví dụ trên tôi có thể viết như sau:

DataClasses1DataContext dc = new DataClasses1DataContext();
var q = from p in dc.Products select p;
if (txtCustomerName.Text != "")
    q = q.Where(p => p.Name != txtCustomerName.Text);
MyDataGrid.DataSource = q;

Written by namdh

14/06/2009 lúc 20:50

Posted in Microsoft .NET

Tagged with , ,

Lấy dữ liệu dùng Stored Procedure (LINQ to SQL phần 6)

with 23 comments

Vài tuần trước tôi bắt đầu viết loạt bài về LINQ to SQL. LINQ to SQL là một bộ khung (framework) có sẵn cho O/RM (object relational mapping) trong .NET 3.5, nó cho phép bạn dễ dàng mô hình hóa các CSDL quan hệ dùng các lớp .NET. Bạn có thể dùng các biểu thức LINQ để truy vấn CSDL, cũng như có thể cập nhật/thêm/xóa dữ liệu từ đó.

Dưới đây là 5 phần đầu tiên của loạt bài này:

Trong các bài viết đó, tôi đã trình bài cách mà các bạn có thể dùng để lập trình lấy dữ liệu về từ CSDL.

Trong bài viết hôm nay, tôi sẽ cho thấy cách chúng ta có thể dùng các stored procedure (SPROCs) và các hàm do người dùng định nghĩa (UDFs) với mô hình dữ liệu LINQ to SQL. Bài viết này sẽ tập trung chủ yếu vào cách dùng SPROCs để truy vấn và lấy dữ liệu về từ CSDL. Trong bài viết kế tiếp, tôi sẽ hiển thị cách bạn có thể dùng các SPROCs để cập nhật, thêm, xóa dữ liệu từ CSDL.
Đọc tiếp »

Written by namdh

17/05/2009 lúc 09:46

Posted in Microsoft .NET

Tagged with ,

Sử dụng asp:LinqDataSource (phần 5)

with 25 comments

Trong các bài viết trước đây, tôi tập trung chủ yếu vào việc mô tả cách truy vấn và cập nhật dữ liệu dùng LINQ to SQL bằng cách lập trình.

Danh sách các bài viết trước có thể xem ở đây:

Trong bài viết này, tôi sẽ khám phá control mới <asp:LinqDataSource> có trong ASP.NET thuộc  phiên bản .NET 3.5. Control này là một datasource control mới cho ASP.NET (giống ObjectDataSource và SQLDataSource có trong ASP.NET 2.0) cho phép bạn khai báo việc gắn kết dữ liệu vào mô hình dữ liệu của LINQ to SQL cực kỳ dễ dàng.

Đọc tiếp »

Written by namdh

20/03/2009 lúc 11:22

Posted in Không phân loại

Tagged with ,

Cập nhật cơ sở dữ liệu (LINQ to SQL phần 4)

with 77 comments

Từ vài tuần trước, tôi đã bắt đầu một loạt bài nói về LINQ to SQL. LINQ to SQL là một O/RM có sẵn trong bản .NET Framework 3.5, và nó cho phép bạn dễ dàng mô hình hóa các CSDL cùng các lớp .NET. Bạn có thể dùng các biểu thức LINQ để truy vấn CSDL, cũng như để thêm/xóa/sửa dữ liệu.

Dưới đây là 3 bài đầu tiên trong loạt bài này:

Trong bài hôm nay, tôi sẽ nói rõ hơn về cách chúng ta dùng CSDL đã được mô hình hóa trước đây, và dùng nó để cập nhật, chỉnh sửa và xóa dữ liệu. Tôi cũng sẽ cho các bạn thấy các chúng ta có thể thêm các quy tắc (business rule – sau này trở đi tôi sẽ để nguyên từ business rule, vì từ này rõ nghĩa hơn) và tùy biến cách xác thực tính hợp lệ của dữ liệu. Đọc tiếp »

Written by namdh

06/01/2009 lúc 23:46

Posted in Microsoft .NET

Tagged with , ,

Hỏi đáp LINQ

with 37 comments

1. LINQ là gì ?

LINQ là một tập hợp các thành phần mở rộng cho phép viết các câu truy vấn dữ liệu ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET.

LINQ là từ viết tắt của “Language-Integrated Query”

2. Tôi cần có gì để lập trình LINQ ?

LINQ có từ bản .NET 3.5, vậy nên tối thiểu chương trình của bạn phải chạy trên nền tảng này.

Visual Studio 2008, hoặc các phiên bản Express của nó là các bộ công cụ phát triển tiêu biểu cho ứng dụng dùng LINQ.

Tải về Visual Studio 2008 tại đây.

Tải về Visual Studio Express tại đây.

3. LINQ và ADO.NET khác nhau chỗ nào ?

Nôm na, LINQ là tập mở rộng cho phép viết các câu truy vấn ngay trong các ngôn ngữ lập trình. Nó cho phép bạn làm việc với các kiểu tập hợp dữ liệu, như XML, collection, array,… và cả CSDL.

ADO.NET là công nghệ cho phép các ứng dụng có thể kết nối và làm việc với các loại CSDL khác nhau (truy vấn, cập nhật, thêm, xóa, gọi thủ tục…).

Bản thân LINQ không phải là một công nghệ được tạo ra để thay thế ADO.NET, bạn có thể làm việc với LINQ mà không dính gì đến CSDL. Tuy nhiên, LINQ to SQL, là một phần mở rộng của LINQ, cho phép bạn có thể làm việc được với CSDL SQL Server, trong trường hợp này thì khi viết bạn có thể bỏ qua các câu lệnh ADO.NET mà chỉ quan tâm tới cú pháp mà LINQ cung cấp.

Nhớ rằng dù bạn không hề dùng đến ADO.NET khi viết chương trình sử dụng LINQ to SQL, nhưng đằng sau nó, ADO.NET vẫn được dùng để thực hiện kết nối, gửi các câu lệnh, các lời gọi thủ tục…

4. LINQ có hỗ trợ Unicode không ?

Có, LINQ là một thành phần của .NET, và như vậy, LINQ hỗ trợ Unicode một cách hoàn toàn tự nhiên, bạn có thể làm các thao tác chèn, sửa dữ liệu với tiếng Việt mà không cần cấu hình thêm. Tất nhiên, khi thiết kế CSDL, bạn vẫn phải chọn kiểu dữ liệu (NVARCHAR) và collation phù hợp để LINQ có thể làm việc một cách đúng đắn.

5. Tôi không thể tìm thấy một số phương thức (Add, RemoveAll…) như các ví dụ trong loạt bài “LINQ to SQL”

Kể từ bản RTM, các phương thức dùng cho thêm và xóa entity đã được đổi tên, cụ thể như sau:

  • Add đổi thành InsertOnSubmit
  • AddAll đổi thành InsertAllOnSubmit
  • Remove đổi thành DeleteOnSubmit
  • RemoveAll đổi thành DeleteAllOnSubmit

(đang cập nhật tiếp, nếu có thắc mắc, xin hãy để lại comment, những comment không liên quan sẽ bị xóa)

Written by namdh

08/12/2008 lúc 01:01

Posted in Microsoft .NET

Tagged with

Sách LINQ

without comments

Written by namdh

04/12/2008 lúc 10:51

Posted in Microsoft .NET

Tagged with ,

Lấy các dòng ngẫu nhiên (LINQ tip #3)

with 10 comments

Trong SQL Server, để lấy về một tập kết quả ngẫu nhiên, bạn có thể viết:

SELECT TOP 5 * FROM myTable ORDER BY NEWID()

Trong LINQ, nếu muốn lấy về một tập kết quả ngẫu nhiên kiểu như trên, bạn cần tạo một hàm ngẫu nhiên, sau đó thêm nó vào LINQ designer, và dùng hàm đã tạo để sắp xếp. Các bước cụ thể như sau:

Đọc tiếp »

Written by namdh

27/11/2008 lúc 17:59

Posted in Microsoft .NET

Tagged with ,

Sử dụng thư viện LINQ Dynamic Query

without comments

LINQ (language integrated query) là một trong những tính năng mới được cung cấp cùng với VS 2008 và .NET 3.5. LINQ làm cho khái niệm truy vấn dữ liệu trở thành một trong những khái niệm cơ bản của lập trình .NET, và cho phép bạn sử dụng các câu truy vấn một cách hiệu quả trong ngôn ngữ lập trình bạn chọn.

Written by namdh

26/11/2008 lúc 10:35

Posted in Không phân loại, Microsoft .NET

Tagged with

LINQ tip #2

with one comment

Khi thực hiện gắn nối dữ liệu vào DataSource của một DataGridView, đừng gắn nối trực tiếp đối tượng Table vào DataSource kiểu như sau:

MyDbContext db = new MyDbContext(); myGridView.DataSource = db.Products;

Nếu bạn viết như trên, trong trường hợp bạn thêm dữ liệu vào, dữ liệu trong DataGridView sẽ không tự động hiển thị dòng mới, thay vì vậy hãy dùng hàm GetNewBindingList():


myGridView.DataSource = db.Products.GetNewBindingList(); 

 
Để thêm một dòng mới, bạn có thể viết: ((IBindingList)myGridView.DataSource).Add(new MyData()); 
 

Dòng dữ liệu mới này sẽ được hiển thị trên DataGridView mà bạn không cần phải làm thêm bất kỳ thao tác nào.

Written by namdh

23/11/2008 lúc 09:11