Framework là khái niệm được sử dụng rất phổ biến trong lĩnh vực công nghệ thông tin. Để tự động hóa các hoạt động liên quan đến cơ sở dữ liệu (CSDL) nhằm giúp bạn xây dựng ứng dụng đơn giản hơn, Entity Framework là một lựa chọn lý tưởng. Vậy cụ thể Entity Framework là gì? Trong bài viết hôm nay, Tino Group sẽ cùng bạn tìm hiểu lợi ích và trường hợp sử dụng của Entity Framework.
Tổng quan về Entity Framework
Entity Framework là gì?
Entity Framework (EF) là một thư viện ORM được phát triển từ năm 2008 bởi Microsoft. Framework này tra đời nhằm hỗ trợ sự tương tác giữa các ứng dụng trên nền tảng .NET với các CSDL quan hệ.
ORM là một tập hợp công nghệ có thể làm việc với các hệ quản trị CSDL quan hệ từ các ngôn ngữ lập trình hướng đối tượng mà không phải trực tiếp để xử lý truy vấn SQL.
Entity Framework sẽ giúp các nhà phát triển web tương tác với CSDL theo phương pháp hướng đối tượng với ít code hơn so với các ứng dụng truyền thống. Ưu điểm nổi bật nhất của ứng dụng này là giúp lập trình viên giảm thiểu việc lập trình mã nguồn để thực hiện truy cập và tương tác với CSDL.
Lịch sử phát triển của Entity Framework
Entity Framework được Microsoft giới thiệu từ năm 2008. Framework này ra đời cùng với .NET 3.5 và phiên bản hiện tại là 6.0.
- Phiên bản Entity Framework đầu tiên chỉ hỗ trợ người dùng tiếp cận Database first. Nghĩa là chỉ việc cùng với một CSLD đã có sẵn và giúp tạo ra các Class code, Model bằng C# hay VB.NET.
- Entity Framework 4 đã xuất hiện hướng tiếp cận Model First, giúp người dùng có thể thiết kế các Class thực tế trước khi sử dụng giao diện đồ họa.
- Đến phiên bản 4.1, Entity Framework đã bổ sung thêm hướng tiếp cận của Code First. Nghĩa là mọi thứ đều có thể được viết bằng code VB.NET hoặc là C# ngay từ đầu. Hướng tiếp cận này có thể mang lại lợi ích cho rất nhiều lập trình viên và được sử dụng một cách rộng rãi.
Những điểm nổi bật của Entity Framework
- Đa nền tảng: Entity Framework Core là một Framework đa nền tảng có thể chạy trên Windows, Linux và MacOS.
- Mô hình hóa: Entity Framework tạo ra EDM (Entity Data Model) dựa trên các entity (thực thể) POCO (Plain Old CLR Object) với các thuộc tính get/set của các loại dữ liệu khác nhau. Framework sẽ sử dụng mô hình này khi truy vấn hoặc lưu dữ liệu vào CSDL.
- Truy vấn: Entity Framework cho phép lập trình viên sử dụng các truy vấn LINQ (C#/VB.NET) để truy xuất dữ liệu từ CSDL. Nhà cung cấp CSDL sẽ dịch các truy vấn LINQ này sang ngôn ngữ dành riêng cho CSDL (ví dụ: SQL cho CSDL quan hệ). Ngoài ra, EF cũng thực hiện các truy vấn SQL thô trực tiếp tới CSDL.
- Theo dõi thay đổi: Entity Framework theo dõi các thay đổi xảy ra đối với các phiên bản entity cần được gửi tới CSDL.
- Giao dịch: Entity Framework thực hiện quản lý giao dịch tự động trong khi truy vấn hoặc lưu dữ liệu. Framework cũng cung cấp các tùy chọn để tùy chỉnh quản lý giao dịch.
- Bộ nhớ đệm: Entity Framework bao gồm cấp bộ nhớ đệm cấp độ đầu tiên. Vì vậy, truy vấn lặp đi lặp lại sẽ trả về dữ liệu từ bộ đệm thay vì truy cập vào CSDL.
- Các quy ước tích hợp sẵn: Entity Framework tuân theo các quy ước về mẫu lập trình cấu hình, bao gồm một bộ quy tắc mặc định tự động định cấu hình mô hình Entity Framework.
- Cấu hình: Entity Framework cho phép cấu hình mô hình bằng cách sử dụng các thuộc tính chú thích dữ liệu hoặc API để ghi đè các quy ước mặc định.
- Di chuyển: Entity Framework cung cấp một tập hợp các lệnh di chuyển có thể được thực thi trên NuGet Package Manager Console hoặc Command Line Interface (Giao diện dòng lệnh để tạo).
Tại sao lập trình viên nên sử dụng Entity Framework?
Những lợi ích mà Entity Framework mang lại như sau:
- Tăng năng suất: Entity framework giúp giảm lượng code và các công việc dư thừa. Từ đó, người dùng sẽ tăng năng suất làm việc, tiết kiệm thời gian, chất xám.
- Đơn giản hoá bảo trì phần mềm: Với lượng code ít, việc bảo trì và kiểm tra phần mềm sẽ đơn giản hơn nhiều.
- Không cần viết code SQL: Lập trình viên có thể sử dụng LINQ to Entities khi thực hiện các truy vấn dữ liệu để thao tác với các Object được ra đời từ Entity Framework.
- Tiết kiệm thời gian viết code: Entity Framework giúp tiết kiệm được thời gian viết code khá lớn để thao tác với CSDL.
- Tự động hóa: Entity Framework tự động tạo ra các Commands, Class tương ứng cho việc insert, select, update, delete,..dữ liệu từ CSDL quan hệ.
Cấu trúc của Entity Framework
EDM (Entity Data Model)
EDM gồm có 3 phần :
- Conceptual Model: Chứa các Model Class. Chúng độc lập với thiết kế bảng CSDL của bạn.
- Mapping: Thông tin về cách Conceptual Model kết nối với Storage Model.
- Storage Model: Đây là Database Design Model gồm các table, views, stored procedures,…
LINQ to Entities và Entity SQL
Đây ngôn ngữ truy vấn được sử dụng để viết các truy vấn tới Object Model và trả về các Entity được định nghĩa bên trong Conceptual Model.
Entity SQL cũng là một ngôn ngữ truy vấn khác gần giống với LINQ to Entities.
Object Service
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 đến một Entity Object Structure.
Entity Client Data Provider
Thành phần này chịu trách nhiệm tương tác với Data Provider của ADO.NET. Entity Client Data Provider sẽ chuyển đổi truy vấn LINQ to Entities hay là Entity SQL về để truy vấn SQL.
Ngoài ra, Entity Client Data Provider còn thực hiện chuyển kết quả thu được từ truy vấn SQL về dạng trung gian sau đó chuyển cho Object Services xử lý.
ADO.Net Data Provider
Thực hiện giao tiếp với CSDL bằng cách sử dụng chuẩn ADO.Net.
Các trường hợp cần sử dụng Entity Framework
Entity Framework được ứng dụng phổ biến trong các trường hợp sau:
- Database First: Khi 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.
- Code First: Khi 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 đó.
- Model First: Khi 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.
Cách tạo project và cài đặt Entity Framework trong C#
Tạo project C#
Đầu tiên, bạn hãy mở Visual Studio và tạo một project.
Cài đặt Entity Framework
Trong mục Solution Explorer, bạn chuột phải vào project -> chọn Manage NuGet Packages…
Tiếp theo, bạn nhấn vào Entity Framework -> chọn Install -> nhấn OK để cài đặt.
Chuẩn bị CSDL
Bước 1: Đầu tiên, bạn mở SQL Server Management Studio -> kết nối đến server.
Bước 2: Tiếp theo, tạo một CSDL tên EntityDB
Bước 3: Trong CSDL đó, bạn hãy tạo một bảng tên Student gồm có 4 cột là StudentID, StudentName, StudentGender và Address.
Sử dụng Entity Framework
Tạo ADO.NET Entity Data Model
Bước 1: Trong Solution Explorer, bạn chuột phải vào project -> chọn Add -> New Item…
Bước 2: Tiếp theo, chọn Visual C# Items rồi chọn ADO.NET Entity Data Model -> nhập Database First Model -> nhấn Add.
Bước 3: Chọn EF Designer from database -> nhấn Next.
Bước 4: Chọn kết nối hiện có hoặc chọn New Connection để thiết lập một kết nối mới.
Nếu chọn New Connection… -> bạn chọn tên máy chủ (Server name) rồi chọn cơ sở dữ liệu (Database name) -> chọn OK.
Bước 5: Chọn Next -> Chọn Table và chọn Finish
Kết quả:
Lưu ý: Bạn cần lưu DatabaseFirstModel.edmx trước khi viết code.
Viết code
Mở Program.cs và nhập code như hình bên dưới:
Thêm dữ liệu vào SQL:
Kết quả:
Trên đây là một số thông tin cơ bản về Entity Framework – một Framework rất hữu ích để lập trình viên truy vấn CSDL. Hy vọng bài viết đã cung cấp cho bạn một kiến thức mới trong lĩnh vực lập trình. Chúc bạn sử dụng hiệu quả nhé!
Những câu hỏi thường gặp
Có những Framework nào tương tự Entity Framework?
Một số giải pháp có thể thay thế cho Entity Framework là: NHibernate, Hibernate, SQLAlchemy, Sequelize, Dapper, Doctrine 2, MyBatis,..
Tìm hiểu thêm về Entity Framework ở đâu?
Để tìm hiểu sâu hơn về cách sử dụng Entity Framework, bạn hãy truy cập vào: https://learn.microsoft.com/en-us/ef/
Visual Studio có miễn phí không?
Visual Studio là một phần mềm miễn phí do Microsoft cung cấp để các nhà phát triển có thể tạo ứng dụng cho Android, iOS, Windows và website.
Có thể sử dụng Entity Framework trong Visual Studio Code?
Visual Studio Code cũng có hỗ trợ Entity Framework. Bạn có thể truy cập vào đây để tham khảo cách viết ứng dụng với Entity Framework và Visual Studio Code.