Multi-Migrations – ASP.NET MVC 5 Entity Framework 6

Multi-Migrations – ASP.NET MVC 5 Entity Framework 6

Hi các bạn,

Với tính năng Migrations cũng như Laravel, chúng ta sẽ tạo ra database hoặc update database, cùng với đó là seed(insert) 1 số row lên table nếu muốn.

Và ở Entities Framework 6 chúng ta đã có thể sử dụng Multi-Migrations.

Để thực hiện Migrations, các bạn cần tạo class Table đầy đủ (Xem tại: http://sethphat.com/sp-380/dinh-nghia-table-trong-asp-net-mvc-5)

Mình sẽ thực hiện Step-by-step về hướng dẫn vụ này.

1/ Tạo DbContexts

Đây là 1 class quan trọng để ta có thể lấy dữ liệu cũng như sử dụng. Chúng ta sẽ có 2 hướng để tạo:

  1. Tạo ngay trong Models.
  2. Tạo thư mục mới đặt tên là DataContexts.

Mình thì dùng cách 2, nhưng cách nào nó cũng như nhau thôi 😀

Theo như bài trước, thì mình đã tạo dc class Movie, giờ mình sẽ tiếp tục tạo DbContext cho Movie, cụ thể:

Tạo class MovieDB:

    public class MovieDB : DbContext
    {
        public DbSet<Movie> Movies { get; set; }

        public MovieDB() : base("DefaultConnection")
        {

        }
    }

Và chỉ đơn giản như vậy thôi, ta đã có thể có 1 class để truy xuất dữ liệu sau này.

Tại sao base lại có giá trị như vậy? Bạn hãy vào Models/IdentityModels sẽ thấy class ApplicationContext.

Và base ở đây là hướng tới 1 connect string, cụ thể là dc define dưới “DefaultConnection”.

Ta vào ngay web.config sẽ thấy cụ thể dòng như sau:

<add name="DefaultConnection" connectionString="..." providerName="System.Data.SqlClient" />

Và chính ở đây, ta sẽ set Connection String cho project của chúng ta luôn.

VD đối với mình đã tạo database trong SQL Server, mình sẽ có connectionString là:

Data Source=.\SQLEXPRESS;Initial Catalog=dbPhim;Integrated Security=True

Và sửa lại hoàn chỉnh DefaultConnection:

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=dbPhim;Integrated Security=True"
      providerName="System.Data.SqlClient" />

Mục đích của việc này là:

  1. Set cụ thể sử dụng DB/Server nào.
  2. Dùng chung 1 phương thức kết nối cho toàn bộ Contexts(Vd nếu 2 connectionString khác nhau sẽ ko join dc 2 table).
  3. Dễ dàng quản lý và sửa đổi trong tương lai.

(Optional) Nếu bạn có tạo MVC Project có Authenticate

Đây là 1 phần ngoài lề, nhưng mình thấy khá là hay vì mình có thể quản lý dễ dàng hơn.

Cụ thể trong thư mục DataContexts, mình sẽ tạo thêm 1 class là IdentityDB.

Và khi nãy bạn nhớ ta có vào xem class ApplicationContext ko, chúng ta sẽ cut class đó qua đây, và sửa lại tên class

Multi-Migrations - ASP.NET MVC 5 Entities Framework 6Sau đó hãy Rebuild lại, ta sẽ gặp vài lỗi, chỉ cần click lỗi và vào đổi tên ApplicationContext thành IdentityDB và using cái DataContexts là dc 😀

2/ Multi-Migrations – ASP.NET MVC 5 Entity Framework 6

Ở đây ta sẽ cần dùng tới Package Console, các bạn có thể search để tìm:

Multi-Migrations - ASP.NET MVC 5 Entities Framework 61/ Bật Migrations

Khi bật lên, nhìn ngay bên dưới, ta sẽ nhập lệnh này để bật migration:

enable-migrations

Hiện tại nó sẽ báo đỏ vì chúng ta có đến 2 model cần migrations (Movie và Identity).

Vậy nên ta sẽ enable-migrations cho cả 2 với lệnh sau:

enable-migrations -ContextTypeName <tên_class_contexts> -MigrationsDirectory <folder_để_tạo_migrations>

enable-migrations -ContextTypeName IdentityDB -MigrationsDirectory DataContexts\IdentityMigrations
enable-migrations -ContextTypeName MovieDB -MigrationsDirectory DataContexts\MovieMigrations

Vì Entity 6 đã hỗ trợ migration ở thư mục ta muốn, nên ta sẽ bỏ chung vào DataContexts luôn với param -MigrationDirectory.

Sau khi chạy xong bạn sẽ có dc 2 file Configuration. Hiện tại chúng ta ko cần seed gì nên khỏi fải quan tâm tới 😀

2/ Thêm Migrations

Chúng ta sẽ tiếp tục thực hiện add-migration thông qua lệnh:

add-migration -ConfigurationTypeName <path_của_folder_migration_configuration> “Tên muốn đặt”

add-migration -ConfigurationTypeName MVCPhim.DataContexts.IdentityMigrations.Configuration "InitialCreate"
add-migration -ConfigurationTypeName MVCPhim.DataContexts.MovieMigrations.Configuration "InitialCreate"

Khi chạy xong ta sẽ thấy dc 2 file, sẽ có các hàm như create table, bên trong có column các kiểu. Nếu vậy bạn đã làm đúng tới bước hiện tại 😀

3/ Thực hiện Migrations

Cụ thể là ta sẽ update-database như sau:

update-database -ConfigurationTypeName <path_của_folder_migration_configuration>

update-database -ConfigurationTypeName MVCPhim.DataContexts.IdentityMigrations.Configuration
update-database -ConfigurationTypeName MVCPhim.DataContexts.MovieMigrations.Configuration

Vậy thôi thì ta đã tạo ra được table và migrate nó. Chúng ta có thể vào SQL Server để check :D.

Các bạn vừa đã hoàn thành xong bài Multi-Migrations – ASP.NET MVC 5 Entity Framework 6.

Cám ơn các bạn đã quan tâm!

facebook
google+
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Sandaru. Hiện đang là một Full-Stack Developer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mình rất thích chia sẻ những thứ kiến thức liên quan tới lĩnh vực này. Mong các bạn ủng hộ web của mình!

One thought on “Multi-Migrations – ASP.NET MVC 5 Entity Framework 6

Comments are closed.

Bình luận qua Facebook