Phương thức My Seed()
của tôi không bao giờ được gọi. Nó được gọi khi tôi làm một số Update-Database
từ Bảng điều khiển Trình quản lý Gói, nhưng không bao giờ khi tôi chạy từ mã. Nếu tôi xóa cơ sở dữ liệu của mình, tất cả các bảng được tạo (vì vậy các lớp di chuyển của tôi được thực hiện), nhưng mã Seed() của tôi không bao giờ được gọi. MVC 4, Khung thực thể hoạt động 5 mã đầu tiên.Phương thức My Seed() không bao giờ được gọi trong Code First EF 5
Global.asax:
protected void Application_Start()
{
Database.SetInitializer<MyContext>(new DbInitializer());
}
DBInit:
internal class DbInitializer : MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>
{
}
DBContext:
public partial class MyContext : DbContext
{
public MyContext() : base("DefaultConnection")
{
}
// public DBSets....
}
Cấu hình:
internal sealed class Configuration : DbMigrationsConfiguration<MyContext>
{
public Configuration()
{
// The constructor is actually called
AutomaticMigrationsEnabled = false;
}
protected override void Seed(MyContext context)
{
// My seed code, never called
}
Điều gì có thể sai?
Bạn có chắc chắn rằng bạn đang làm điều gì đó với ngữ cảnh không? DbContext là lười biếng; nó không làm được gì nhiều cho đến khi bạn bắt đầu sử dụng nó bằng cách, ví dụ, chạy một truy vấn hoặc thêm một đối tượng. Trình khởi tạo của bạn sẽ chỉ chạy khi ngữ cảnh được sử dụng lần đầu tiên. Bạn có thể gây ra khởi tạo xảy ra bằng cách gọi context.Database.Initialize (false); –
Tôi có cùng một vấn đề, mặc dù tôi không có cấu hình khá giống nhau (tôi dựa vào trải nghiệm ngoài hộp) .Tôi đã thử chạy context.database.Khởi tạo (false) với cả true và false nhưng không phải chúng đều gây ra phương thức seed. – Noel
@ArthurVickers Vâng, tôi chắc chắn. –