Giới thiệu Entity Framework

Entity Framework là framework ánh xạ quan hệ đối tượng (ORM - Object Relational Mapping) cung cấp cơ chế tự động cho các nhà phát triển để lưu trữ và truy cập dữ liệu trong cơ sở dữ liệu.

Hướng dẫn này tập trung vào các tính năng của Entity Framework Code First. Nó cũng giải thích các tính năng mới được giới thiệu trong Entity Framework 6.

Đối tượng độc giả

Hướng dẫn này được thiết kế cho những người muốn tìm hiểu cách bắt đầu lập trình Entity Framework trong ứng dụng của họ.

Điều kiện tiên quyết

Bạn nên có kiến ​​thức cơ bản về Visual Studio, lập trình C#MS SQL Server để tận dụng tối đa hướng dẫn này.

Entity Framework là gì?

Entity Framework được phát hành lần đầu tiên vào năm 2008, nó là phương tiện tương tác chính giữa các ứng dụng .NET và cơ sở dữ liệu quan hệ.

Entity Framework là một ánh xạ quan hệ đối tượng (ORM), là một loại công cụ giúp đơn giản hóa ánh xạ giữa các đối tượng trong phần mềm của bạn với các bảng và cột của cơ sở dữ liệu quan hệ.

  • Entity Framework (EF) là một framework ORM mã nguồn mở độc lập với .NET Framework.
  • Entity Framework đảm nhiệm việc tạo các kết nối cơ sở dữ liệu và thực thi các lệnh, cũng như lấy kết quả truy vấn và tự động ánh xạ các kết quả đó thành các đối tượng trong ứng dụng của bạn.
  • Entity Framework giúp theo dõi các thay đổi của đối tượng và cập nhật các thay đổi đó trở lại cơ sở dữ liệu cho bạn.

Tại sao nên sử dụng Entity Framework?

Entity Framework được thiết kế nhằm mục đích tăng năng suất của nhà phát triển bằng cách giảm các công việc dư thừa như là duy trì dữ liệu được sử dụng trong các ứng dụng.

  • Entity Framework có thể tạo các câu lệnh truy cấn cần thiết để đọc hoặc ghi dữ liệu trong cơ sở dữ liệu và thực thi chúng cho bạn.
  • Nếu bạn cần truy vấn dữ liệu, bạn có thể sử dụng LINQ to Entities.
  • Entity Framework sẽ thực hiện các truy vấn có liên quan trong cơ sở dữ liệu và sau đó ánh xạ kết quả trả về thành các đối tượng để bạn làm việc trong ứng dụng của mình.

Có các ORM khác trên thị trường như NHibernate và LLBLGen Pro. Hầu hết các ORM thường ánh xạ các loại miền trực tiếp vào lược đồ cơ sở dữ liệu.

Typical ORM

Entity Framework có lớp ánh xạ chi tiết hơn để bạn có thể tùy chỉnh ánh xạ. Ví dụ, bằng cách ánh xạ một thực thể vào nhiều bảng trong cơ sở dữ liệu hoặc thậm chí nhiều thực thể vào một bảng.

  • ADO.NET là công nghệ được sử dụng để làm việc trực tiếp cơ sở dữ liệu ở mức thấp.
  • Microsoft khuyên bạn nên sử dụng Entity Framework thay vì sử dụng ADO.NET hoặc LINQ to SQL cho tất cả những ứng dụng mới.

Tính năng của Entity Framework

Sau đây là các tính năng cơ bản của Entity Framework. Danh sách này được tạo dựa trên các tính năng đáng chú ý nhất và cũng từ các câu hỏi thường gặp về Entity Framework.

  • Entity Framework là một công cụ của Microsoft.
  • Entity Framework đang được phát triển như một sản phẩm mã nguồn mở.
  • Entity Framework không còn bị ràng buộc hoặc phụ thuộc vào chu kỳ phát hành của .NET Framework.
  • Làm việc với bất kỳ cơ sở dữ liệu quan hệ nào có Entity Framework provider hợp lệ.
  • Tạo truy vấn SQL từ LINQ to Entities.
  • Entity Framework sẽ tạo các truy vấn có tham số.
  • Theo dõi các thay đổi của các đối tượng trong bộ nhớ.
  • Cho phép tạo các câu lệnh thêm, cập nhật và xóa.
  • Entity Framework hỗ trợ stored procedure.

Kiến trúc Entity Framework

Kiến trúc của Entity Framework được minh họa trong hình sau:

Kiến trúc Entity Framework

Application

Application (ứng dụng) là tầng chứa giao diện tương tác với người dùng, có thể là ứng dụng web hoặc ứng dụng Windows Forms. Tầng này thường sử dụng Repository pattern để làm việc với cơ sở dữ liệu thông qua Entity Framework.

Object Services

Object Services là tầng chứa quá trình tương tác giữa ứng dụng và database, hay nói cách khác nó là nơi chủ yếu để truy cập dữ liệu từ database và trả ngược kết quả về giao diện. Object Services cung cấp các tiện ích để truy vết các thay đổi và cập nhật thay đổi trở lại ở database.

EntityClient Data Provider

Đây là tầng cung cấp các kết nối, diễn dịch các truy vấn thực thể thành truy vấn nguồn dữ liệu, trả về data reader để EF dùng chuyển dữ liệu thực thể thành các đối tượng. Phần này kết nối ADO.NET Data Providers để gửi hoặc lấy dữ liệu từ database.

ADO.NET Data Providers

Đây là tầng thấp nhấp để dịch các truy vấn LINQ to Entity thành các câu lệnh SQL và thực thi các câu lệnh trong hệ thống DBMS. Tầng này kết với database sử dụng ADO.NET.

Entity Data Model (EDM)

Entity Data Model gồm 3 phần chính: mô hình khái niệm (CSDL – Conceptual schema definition language), mô hình ánh xạ (MSL – mapping specification language) và mô hình lưu trữ (SSDL – store schema definition language). Entity Data Model khác với EntityClient Data Provider ở chỗ nó sử dụng LINQ là ngôn ngữ truy vấn tương tác với database.

Mô hình khái niệm (CSDL)

Mô hình khái niệm chứa các lớp mô hình và mối quan hệ giữa các lớp này. Nó độc lập với mô hình quan hệ các bảng trong database.

Mô hình lưu trữ (SSDL)

Mô hình lưu trữ là 1 mô hình thiết kế database bao gồm các table, view, stored procedure, mối quan hệ giữa chúng các bảng và khóa. Mô hình này thể hiện gần giống mô hình quan hệ các bảng trong database.

Mô hình ánh xạ (MSL)

Mô hình ánh xạ gồm thông tin về cách mô hình khái niệm được ánh xạ đến mô hình lưu trữ.

Ở hướng dẫn tiếp theo chúng ta sẽ tìm hiểu về cách thiết lập môi trường để bắt đầu làm việc với Entity Framework.



Bài viết liên quan:

2 kịch bản lưu dữ liệu trong Entity Framework Core là kịch bản được kết nối và kịch bản ngắt kết nối.

Tạo ứng dụng .NET Core Console đầu tiên và cấu hình sử dụng Entity Framework Core.

Truy vấn trong Entity Framework Core có gì mới? Truy vấn trong EF Core khác EF ở những điểm nào.