Thứ Bảy, 1 tháng 10, 2011

ADO.NET Entity Framework 4: Kết nối cơ sở dữ liệu chưa bao giờ dễ dàng đến thế

Nếu bạn đã từng code một ứng dụng đòi hỏi cần có một cơ sở dữ liệu loại “khủng” như SQL Server thì ắt bạn đã từng có lúc bực mình khi không thể kết nối đến Database của mình hay cảm thấy quá rắc rối khi làm việc với các câu lệnh SQL hay điên đầu với đống DataSet rồi Data Binding.
Với ADO.NET Entity Framework, tất cả chỉ là quá khứ. Hãy cùng tôi khám phá công nghệ này và thử làm cho các công việc nhàm chán trên chỉ còn là dĩ vãng. Bạn sẽ cảm thấy thích công nghệ này và bắt đầu “yêu” công nghệ Microsoft đấy.

ADO.NET vs. ADO.NET Entity Framework

ADO.NET

         ADO.NET là viết tắt của cụm từ ActiveX Data Object .NET, là một phần của .NET Framework, nó được xem là bộ thư viện chịu trách nhiệm xử lý dữ liệu.
ADO.NET được thiết kế với dạng dữ liệu “ngắt kết nối”, nghĩa là chúng ta có thể lấy cả một cấu trúc phức tạp của dữ liệu từ Database, sau đó ngắt kết nối với Database rồi mới thực hiện các thao tác cần thiết. Đây là một sự tiến bộ về mặt thiết kế bởi vì thiết kế ADO trước đây luôn cần duy trì một kết nối trong quá trình thao tác dữ liệu.
          Tuy nhiên, điểm yếu dễ thấy của ADO.NET là ở chỗ thao tác với dữ liệu nhận về từ Database. ADO.NET gom dữ liệu nó truy xuất được từ Database, sau khi đã ngắt kết nối, thành một đối tượng duy nhất gọi là Dataset. Người dùng sẽ thao tác với Dataset như với Database thực sự. Khi thao tác với dataset này, lập trình viên chỉ được truy xuất thẳng tới bảng ,dòng ,cột mong muốn. Điều này có nghĩa là họ cần quan tâm tới các yêu cầu, ràng buộc, liên kết, phụ thuộc trong Database, chỉ khác đi là giờ họ phải làm việc với Dataset, giống như 1 sự trừu tượng hóa ở mức độ cơ bản, chưa tự động hóa hoàn toàn.

ADO.NET Entity framework

          Khác với ADO.NET chỉ giúp lập trình viên “đỡ cực” khi làm việc với Dataset thay vì trực tiếp trên Database, ADO.NET Entity Framework là một cuộc cách mạng thực sự khi đưa ra khái niệm Entity (thực thể). Nếu các bạn rành 1 tí về thiết kế Database thì quy trình thiết kế  1 Database đúng, hoàn thiện, bao giờ cũng đi từ bước lập “Sơ đồ thực thể các mối kết hợp” (ERD – Entity Relationship Diagram), sau đó mới lập sơ đồ gồm các bảng và các mối liên hệ giữa chúng, ERD là mô hình diễn tả đời sống thực tế còn các bảng trong Database chỉ đơn thuần là một sự trừu tượng hóa mà thôi.
          Do vậy, cách tiếp cận lập trình theo hướng thực thể là rất dễ và đi sâu tìm hiểu đến cốt lõi của vấn đề. Một thực thể (entity) khác một đối tượng (object). Điểm chính ở đây là với đối tượng, ta chỉ biết các thông tin về duy nhất mình nó mà thôi, các quan hệ với các đối tượng khác ta hoàn toàn phải suy luận thêm qua dữ liệu mà nó cung cấp cũng như từ thế giới bao quanh nó, tức phải qua 1 quá trình phân tích, tính toán, xem xét đôi khi mất nhiều thời gian và công sức. Entity không đơn thuần là 1 đối tượng hay 1 nhóm các đối tượng riêng rẽ. Entity là sự tập hợp các đối tượng có quan hệ ràng buộc chặt chẽ với nhau theo 1 cách thức nào đó, bao gồm cả thông tin về mối quan hệ, các đặc điểm đi kèm mà không cần một sự tính toán thêm nào.
          Ví dụ, với cách tiếp cận cũ là sử dụng SQL truy vấn đến 1 Database, thông thường quá trình truy vấn phải có sự kết hợp nhiều bảng với các liên kết khóa ngoại rối rắm. Lập trình viên (ở đây không là người thiết kế Database) phải xem xét toàn bộ Database, cân nhắc cần thêm những bảng nào vào câu truy vấn, quan hệ giữa chúng, các ràng buộc liên quan, hệ quả khi thao tác thêm hay xóa và một loạt các công việc nhàm chán khác. Với cách tiếp cận the entity, họ chỉ cần thao tác với 1 entity duy nhất, hệ thống sẽ lo các công việc còn lại. Thật “đã” phải không? Open-mouthed smile
          ADO.NET Entity Framework đơn giản hoá mã truy cập dữ liệu trong các ứng dụng bằng cách cho phép các lập trình viên tạo ra một mô hình khái niệm (conceptual model) cho các dữ liệu từ bất kỳ nguồn nào và dễ dàng đùng nó ứng với các yêu cầu phần mềm đặt ra. Trong quá trình phát triển, một mô hình khái niệm sẽ được tạo ra, “ánh xạ” cấu trúc của Database hiện có và lấy mô hình này lập trình trong phần mềm. Nói cách khác, lập trình viên sẽ không thực sự lập trình với Database mà là với các khái niệm cụ thể, gần gũi với đời thực qua mô hình này.
          Đặc biệt, với mô hình này, lập trình viên sẽ “nói lời tạm biệt” với các câu lệnh SQL khô khan. Truy vấn cơ sở dữ liệu trong ADO.NET Entity Framework rất dễ dàng với LINQ (chính xác là LINQ to SQL), một bộ thư viện đã được tích hợp sẵn trong .NET Framework nhằm đơn giản hóa truy vấn, thay vì truy vấn đến Database tức bộ nhớ tĩnh, thì giờ là với các đối tượng thực thể tức bộ nhớ động. Chi tiết về LINQ các bạn có thể vào MSDN của Microsoft để tìm hiểu thêm.

Ba hướng tiếp cận vấn đề của ADO.NET Entity Framework 

Database-First Development

Xuất phát điểm từ một Database đã được xây dựng sẵn, ADO.NET Entity Framework sẽ sinh mô hình khái niệm trừu tượng các thực thể cho Database.

Model-First Development

Xuất phát điểm từ con số không, tức chưa có Database, lập trình viên sẽ tự thiết kế mô hình khái niệm trừu tượng và từ đó sinh mã DDL tạo Database.

Code-First Development

Giống với Model-First Develpment (có sử dụng tool hỗ trợ kéo thả), nhưng tất cả đều sinh từ code, không sử dụng giao diện đồ họa. Hướng tiếp cận này được ưa chuộng hơn cả, nhất là với các lập trình viên đủ độ “pro”, vì cách này cho phép họ kiểm soát mọi thứ, không dựa dẫm quá nhiều và tool của Microsoft, và thay đổi các thiết lập mặc định.

Link download

http://www.microsoft.com/download/en/details.aspx?id=26825

Kết luận

Do thời gian có hạn, mình chỉ trình bày sơ lược về ADO.NET Entoty Framework ở mức độ “giới thiệu” mà thôi. Mình nghĩ, tuy mới giới thiệu thôi nhưng cũng đủ làm các bạn tò mò và muốn biết thêm nhiều thứ khác về công nghệ này. Mình sẽ post một loạt bài về các tính năng, cũng như tut cho các bạn sau.

Không có nhận xét nào:

Đăng nhận xét