Vậy thì Migration trong Entity Framework là gì? Cùng Comdy.vn tìm hiểu trong bài viết này nhé.
Migration database là gì?
Data migration là gì? Migration database là quá trình chuyển đổi dữ liệu từ một hệ thống cơ sở dữ liệu sang một hệ thống cơ sở dữ liệu khác. Điều này thường xuyên xảy ra khi tổ chức quyết định nâng cấp, thay đổi, hoặc di chuyển hệ thống cơ sở dữ liệu hiện tại của mình sang một phiên bản mới hoặc một loại cơ sở dữ liệu khác.
Quá trình migration database có thể đặc trưng bởi các bước như: phân tích, thiết kế, chuyển đổi dữ liệu, kiểm thử và triển khai.
Migration trong Entity Framework
Có một số vấn đề với các chiến lược này, ví dụ: nếu bạn đã có dữ liệu (trừ seed data – dữ liệu ban đầu được thêm bằng code) hoặc stored procedures, triggers, v.v. trong cơ sở dữ liệu của bạn.Vì vậy, Entity Framework Code First có các chiến lược khởi tạo cơ sở dữ liệu khác nhau như CreateDatabaseIfNotExists, DropCreateDatabaseIfModelChanges, và DropCreateDatabaseAlways.
Các chiến lược này được sử dụng để loại bỏ toàn bộ cơ sở dữ liệu và tạo lại nó, do đó bạn sẽ mất dữ liệu và các đối tượng DB khác.
Vậy migration là gì? Entity Framework đã giới thiệu một công cụ migration ef tự động cập nhật lược đồ cơ sở dữ liệu khi mô hình của bạn thay đổi mà không mất bất kỳ dữ liệu hiện có hoặc các đối tượng cơ sở dữ liệu khác. Nó sử dụng một trình khởi tạo cơ sở dữ liệu mới gọi là MigrateDatabaseToLatestVersion.
Có hai loại Migration:
- Migration tự động.
- Migration dựa trên mã.
Rollback Migration (entity framework revert migration)
Giả sử bạn muốn khôi phục lược đồ cơ sở dữ liệu về bất kỳ trạng thái nào trước đó, thì bạn có thể thực thi lệnh update-database với tham số –TargetMigration đến điểm mà bạn muốn quay lại.
Ví dụ: giả sử có nhiều lần ef migration được áp dụng cho cơ sở dữ liệu SchoolDB ở trên nhưng bạn muốn quay lại lần di chuyển đầu tiên. Thì thực hiện lệnh sau.
PM> update-database -TargetMigration:SchoolDB-v1
Update database migration như thế nào?
- Tạo migration mới:
Sử dụng các công cụ ORM (Object-Relational Mapping) hoặc framework cung cấp để tạo migration mới.
Lựa chọn tên có ý nghĩa để mô tả thay đổi cụ thể được thực hiện trong migration c# entity framework.
- Định nghĩa thay đổi cơ sở dữ liệu:
Trong migration, xác định các thay đổi cụ thể bạn muốn thực hiện, chẳng hạn như thêm cột mới, xóa cột, sửa đổi kiểu dữ liệu, và các thay đổi khác.
- Thực hiện cập nhật schema:
Sử dụng các lệnh SQL hoặc các phương thức của ORM để thực hiện thay đổi cấu trúc cơ sở dữ liệu. Đảm bảo rằng các thay đổi được thực hiện đúng cách và không gây ra sự mất mát dữ liệu quan trọng.
- Kiểm tra và thử nghiệm:
Trước khi triển khai migration vào môi trường sản xuất, hãy kiểm tra migration trong môi trường thử nghiệm để đảm bảo tính đúng đắn và không gặp lỗi.
- Backup dữ liệu:
Trước khi thực hiện bất kỳ thay đổi cơ sở dữ liệu nào, là lời khuyên tốt là sao lưu toàn bộ cơ sở dữ liệu. Điều này sẽ giúp phục hồi dữ liệu nếu có vấn đề nào đó xảy ra.
- Triển khai cập nhật:
Sau khi kiểm tra và backup hoàn thành, triển khai migration vào môi trường sản xuất hoặc môi trường mà bạn đang làm việc.
- Ghi lại thay đổi:
Ghi lại thông tin chi tiết về migration, bao gồm thời gian thực hiện, người thực hiện và mô tả các thay đổi.
Enable migration là gì?
Enable-migrations là một thuật ngữ thường được sử dụng trong ngữ cảnh của các framework hoặc thư viện ORM trong lập trình. Cụ thể, đối với một số framework như Django (Python) hoặc Entity Framework (được sử dụng trong các ứng dụng .NET), enable entity framework migrations thường đề cập đến việc bật chức năng quản lý và thực hiện các thay đổi cơ sở dữ liệu.
Ở mức đơn giản, khi bạn bật chế độ migration, framework sẽ tạo ra các tệp tin chứa mã nguồn mà bạn có thể sử dụng để thực hiện các thay đổi trong cơ sở dữ liệu của bạn.
Add migrations entity framework (add-migration initial)
Để add migration asp.net core trong Entity Framework (EF), bạn cần sử dụng công cụ dòng lệnh (Command-Line Interface – CLI) của EF. Tham khảo cách asp.net add migration Entity Framework CLI sau đây:
- Mở Command Prompt hoặc Terminal:
Mở Command Prompt (trên Windows) hoặc Terminal (trên macOS hoặc Linux).
- Di chuyển đến thư mục Dự án:
Sử dụng lệnh cd để di chuyển đến thư mục của dự án Entity Framework.
Ví dụ: cd đường_dẫn_đến_dự_án
- Chạy lệnh Add Migration:
Sử dụng lệnh dotnet ef migrations add để thêm migration mới. Đặt tên cho migration của bạn để mô tả mục đích của nó.
Ví dụ: dotnet ef migrations add TenMigration
- Kiểm tra mã nguồn tạo ra:
Mở dự án trong trình soạn thảo mã nguồn (Visual Studio Code, Visual Studio, Rider, etc.) để kiểm tra mã nguồn mới tạo ra trong thư mục Migrations.
- Kiểm tra và sửa lỗi:
Trong quá trình thêm migration, Entity Framework có thể phát hiện các lỗi hoặc cảnh báo. Kiểm tra chúng và sửa lỗi nếu cần thiết.
Dbmigrationsconfiguration ef core là gì?
DbMigrationsConfiguration là một class được sử dụng để cấu hình các tùy chọn liên quan đến quá trình migration. Tuy nhiên, cần lưu ý rằng DbMigrationsConfiguration không tồn tại trong EF Core như trong Entity Framework truyền thống (EF6). Trong EF Core, các tùy chọn này thường được cấu hình thông qua DbContext hoặc sử dụng các API khác của EF Core.
DbMigrationsConfiguration được sử dụng để cung cấp cấu hình cho việc quản lý migrations, chẳng hạn như cơ sở dữ liệu mà migrations sẽ áp dụng đến, tên của bảng để lưu trạng thái migrations, và các tùy chọn khác.
Migrator là gì?
Migrator là một thành phần hoặc công cụ giúp quản lý quá trình di chuyển hoặc cập nhật cơ sở dữ liệu từ phiên bản này sang phiên bản khác. Migrator có thể tồn tại trong các framework ORM (Object-Relational Mapping) hoặc các công cụ quản lý cơ sở dữ liệu. Nó giúp hỗ trợ việc thay đổi schema, thêm, sửa, hoặc xóa các thành phần trong cơ sở dữ liệu.
Migrator trong Entity Framework (EF) có một lớp có tên là Migrator hoặc IMigrator (tùy thuộc vào phiên bản EF), được sử dụng để thực hiện các hoạt động liên quan đến migration.
Kết lại
Trên đây là toàn bộ chia sẻ của Comdy về Migration trong Entity Framework. Hi vọng những kiến thức trong bài viết này là bổ ích và ý nghĩa với mọi người. Xin cám ơn vì đã theo dõi và ủng hộ.