2014-06-10 13 views
18

Tôi mới trong một dự án và có lớp học này cho các dữ liệu hạt giống:Khi nào phương thức Seed được gọi trong kịch bản di trú đầu tiên của mã EF?

internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = true; 
     } 

Và đoạn mã này để bắt đầu hạt giống:

protected override void Seed(Context context) 
    { 
     try 
     { 

Câu hỏi của tôi là: khi là phương pháp Seed gọi là? Chỉ khi người dùng thực hiện update-database và người dùng không có cơ sở dữ liệu (về cơ bản một người dùng mới), hoặc cũng có khi người dùng với một cơ sở dữ liệu hiện có gọi là một update-database?

Trả lời

13

phương pháp Seed được sử dụng để khởi tạo các bảng cơ sở dữ liệu với một số dữ liệu ban đầu. Bất cứ khi nào bạn chạy di chuyển và cập nhật cơ sở dữ liệu, nó sẽ chạy phương thức hạt giống. Chủ yếu là nó được sử dụng trong giai đoạn thử nghiệm, nơi bạn thường cần phải tạo lại cơ sở dữ liệu và điền các bảng cơ sở dữ liệu với dữ liệu mẫu. Vui lòng xem qua liên kết này http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/ để được giải thích thêm về mã trước tiên.

18

Khi nói đến phương pháp di chuyển Seed(), đến từ lớp DbMigrationsConfiguration, nó được gọi mỗi khi lệnh Update-Database được thực thi. Ngoài ra khi người dùng gọi nó có cơ sở dữ liệu hiện có.

Có là có một phương pháp Seed() - đó là một initializer cơ sở dữ liệu. Nó được gọi khi cơ sở dữ liệu đang tạo và không xử lý dữ liệu hiện có (hạt giống từ DbMigrationsConfiguration đặt chúng lên, kiểm tra xem các thực thể được chỉ định có tồn tại hay không).

Tốt nhìn lên đến One Unicorn blog để biết thêm thông tin.

+0

Trên thực tế, nhưng khi tôi tạo ra một bối cảnh mới trong một thử nghiệm đơn vị, cũng chạy Seed, đem lại cho tôi tất cả dữ liệu dòng dõi tôi trong bộ nhớ. – Ian

Các vấn đề liên quan