Những bài khác trong loạt series này:
Phần 2 – Cài đặt môi trường
Phần 3 – Tạo Entity Data Model
Phần 4 – Model Browser
Phần 5 – DBContext
Phần 6 – Entity #1
Phần 7 – Entity #2
Phần 8 – Các phương pháp phát triển với Entity Framework
Phần 9 – Truy vấn với EDM
Phần 10 – Lớp DBSet
Phần 11 – Lớp DBEntityEntry
Phần 12 – Change Tracking trong Entity Framework
Phần 13 – Persistence trong Entity Framework
Phần 14 – Disconnected Scenario #1
Phần 15 – Disconnected Scenario #2
Phần 16 – Disconnected Scenario #3
Phần 17 – Concurrency trong Entity Framework
Phần 18 – Stored Procedure trong Entity Framework
Phần 19 – Eager Loading, Lazy Loading và Explicit Loading trong Entity Framework
Phần 20 – Thực thi truy vấn Native SQL
Phần 21 – Validate Entity

I. Giới thiệu về Entity Framework

Bạn sẽ học được những khái niệm cơ bản của Entity Framework sau khi hoàn thành những bài hướng dẫn trong mục này. Chúng ta sẽ sử dụng Entity Framework 6.0 và Visual Studio 2012 cho tất cả các bài hướng dẫn.

Bảng sau liệt kê danh sách tất cả các phiên bản quan trọng của Entity Framework.

Phiên bản EF Những chức năng được giới thiệu
EF 3.5 Hỗ trợ O/RM cơ bản với phương pháp tiếp cận Database First.
EF 4.0 Hỗ trợ POCO, Lazy loading, cải thiện khả năng kiểm tra, tùy biến mã và phương pháp tiếp cận Model First.
EF 4.1 Lần đầu xuất hiện trên NuGet, đơn giản hóa DBContext API qua ObjectContext, phương pháp tiếp cận Code First. Ra mắt gói EF 4.1.1 để vá các lỗi của phiên bản 4.1.
EF 4.3 Chức năng Code First Migrations cho phép một CSDL được tạo bởi Code First để gia tăng thay đổi như sự tiến hóa mô hình Code First của bạn. Ra mắt gói EF 4.3.1 để vá các lỗi của phiên bản EF 4.3.
EF 5.0 Công bố EF là mã nguồn mở. Giới thiệu việc hỗ trợ Enum, các hàm table-valued, kiểu dữ liệu không gian, multiple-diagrams per model, màu sắcủa các hình trên bề mặt thiết kếvà nhập một nhóm của stored procedures, EF Power Tools và các cải thiện về hiệu năng khác.
EF 6.0 – Current release EF 6.0/6.1 là bản phát hành mới nhất của Entity Framework. Nó bao gồm nhiều chức năng mới liên quan tới Code First và thiết kế EF giống như truy vấn và lưu bất đồng bộ, kết nối Resiliency, giải pháp dependency, …

Những từ viết tắt:

  • O/RM (Object-relational mapping)
  • POCO (Plain Old CLR Object)
  • EF (Entity Framework)

II. Entity Framework là gì?

Viết và quản lý mã ADO .Net cho việc truy cập dữ liệu là một công việc nhàm chán và tẻ nhạt. Microsoft đã cung cấp một O/RM framework gọi là “Entity Framework” để tự động hóa các hoạt động liên quan đến CSDL cho ứng dụng của bạn.

https://msdn.microsoft.com/en-us/library/aa937723(v=vs.113).aspx

Entity framework là một Object/Relational Mapping (O/RM) framework. Nó là một sự cải tiến  tới ADO.NET và đưa cho các lập trình viên một cơ chế tự động cho việc truy xuất và sắp xếp dữ liệu trong CSDL.

Entity framework là rất hữu ích trong ba tình huống. Đầu tiên là nếu bạn đã có một CSDL hoặc muốn thiết kế CSDL trước khi làm các phần khác của ứng dụng. Thứ hai là bạn muốn tập trung vào các domain class rồi  mới tạo CSDL từ các domain class đó. Thứ ba là bạn muốn thiết kếschema của CSDL trên visual designer rồi mới tạo CSDL và các class.

Hình dưới đây minh họa các tình huống trên.

Entity Framework overview

Như hình trên thì EF tạo các lớp truy cập dữ liệu cho CSDL hiện tại của bạn để bạn có thể sử dụng các lớp này để tương tác với CSDL thay vì trực tiếp bằng ADO.Net.

EF có thể cũng tạo CSDL từ các domain class của bạn vì thế bạn có thể tập trung vào thiết kếdomain-driven.

EF cung cấp cho bạn một model designer mà ở đó bạn có thể thiết kế DB model của bạn rồi EF sẽ tạo CSDL và các lớp dựa trên DB model.

III. O/RM là gì?

ORM là một công cụ dành cho việc lưu trữ dữ liệu từ domain objects tới CSDL quan hệ như MS SQL theo một cách tự động hóa và không phải lập trình nhiều. ORM bao gồm ba phần chính: những đối tượng Domain class, những đối tượng CSDL quan hệ và thông tin Mapping về cách làm thếnào domain objects nối với những đối tượng CSDL quan hệ (tables, views & storedprocedures). ORM cho phép chúng ta giữ thiết kế CSDL tách biệt với thiết kế domain class. Điều này giúp cho việc bảo trì và nâng cấp ứng dụng. Nó cũng tự động hóa các thao tác CRUD (Create, Read, Update & Delete) giúp cho các lập trình viên không cần phải viết thủ công.

Một công cụ ORM điển hình khởi tạo các lớp để tương tác với CSDL như bên dưới:

Entity Framework overview

Có nhiều ORM frameworks cho .Net trên thị trường như DataObjects.Net, NHibernate, OpenAccess, SubSonic,… Entity Framework là một ORM framework mã nguồn mở từ Microsoft.

IV. Cấu trúc của Entity Framework

Hình sau thể hiện cấu trúc tổng thể của Entity Framework. Cho phép chúng ta nhìn vào từng thành phần riêng biệt của cấu trúc:

Entity Framework Architecture

EDM (Entity Data Model): EDM gồm ba phần chính – Conceptual model, Mapping và Storage model.

Conceptual Model: chứa các model class và những quan hệ của nó. Phần này sẽ độc lập với thiết kế bảng CSDL của bạn.

Storage Model: là database design model gồm các bảng, views, stored procedures, và những quan hệ của nó và các khóa.

Mapping: gồm có thông tìn về cách làm thế nào Conceptual model nối với Storage model.

LINQ to Entities: là một ngôn ngữ truy vấn sử dụng để viết các truy vấn tới object model. Nó trả về các thực thể được định nghĩa trong Conceptual model. Bạn có thể sử dụng kỹ năng LINQ của bạn ở đây.

Entity SQL: là một ngôn ngữ truy vấn khác giống LINQ to Entities. Tuy nhiên nó có một chút khó khăn hơn L2E và các lập trình viên sẽ phải học nó riêng.

Object Service: là một điểm vào chính cho việc cho việc truy cập dữ liệu từ CSDL và trả về. Object service có trách nhiệm trong việc cụ thể hóa quá trình chuyển đổi dữ liệu trả về từ một entity client data provider (lớp tiếp theo) tới một entity object structure.

Entity Client Data Provider: Trách nhiệm chính của lớp này là chuyển đổi L2E hoặc những truy vấn Entity SQL vào một truy vấn SQL , nó được hiểu bởi CSDL cơ bản. Nó giao tiếp với ADO.Net data provider lần lượt gửi và nhận dữ liệu từ CSDL.

ADO.Net Data Provider: Lớp này giao tiếp với CSDL bằng việc sử dụng chuẩn ADO.Net.

Nguồn: http://www.entityframeworktutorial.net/

Advertisements