Bạn tạo trình khởi tạo cơ sở dữ liệu tùy chỉnh và ghi đè Seed
phương pháp
public class MyContextInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
context.ContactTypes.Add(new ContactType { DisplayName = "Home" });
context.ContactTypes.Add(new ContactType { DisplayName = "Mobile" });
context.ContactTypes.Add(new ContactType { DisplayName = "Office" });
context.ContactTypes.Add(new ContactType { DisplayName = "Fax" });
//EF will call SaveChanges itself
}
}
Sau đó, bạn đăng ký trình khởi tạo này cho ngữ cảnh bắt nguồn của bạn MyContext
:
Database.SetInitializer<MyContext>(new MyContextInitializer());
Đây là một phương thức tĩnh của Database
lớp và nên được gọi ở đâu đó một lần khi khởi động ứng dụng. Bạn cũng có thể đặt nó vào một phương thức khởi tạo tĩnh của ngữ cảnh để đảm bảo rằng intializer được đặt trước khi bạn tạo phiên bản ngữ cảnh đầu tiên:
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
Thay vì trình khởi tạo cơ sở DropCreateDatabaseIfModelChanges<T>
bạn cũng có thể lấy từ DropCreateDatabaseAlways<T>
hoặc CreateDatabaseIfNotExists<T>
nếu điều đó đáp ứng tốt hơn nhu cầu của bạn.