我正在尝试使用自定义数据库初始化程序播种一些数据,但无法使其正常工作。我尝试向 appConfig 文件添加一些配置,但这也不起作用。
这是一个 WPF 应用程序,我不想引用我的 EntityLibrary。我想使用上下文的构造函数来播种数据。它出什么问题了?
编辑:问题是没有数据被填充。调试时,我看到调用了上下文的构造函数 SetInitiazlier 函数,但从未调用过重写的 Seed 方法,实际上调试器从未进入 Seed 方法。
同时 XAML 解析器给出了一个错误,抱怨 DropCreateDatabaseIfModelChanges 的 TContext 类型参数。我不能给出确切的错误,因为我家里没有代码。
这是我的自定义初始化程序:
public class DbInitializer : DropCreateDatabaseIfModelChanges<DemirbaşContext>
{
protected override void Seed(DemirbaşContext context)
{
Kullanıcı kullanıcı = new Kullanıcı
{
Ad = "Mert",
Soyad = "Mert",
KullanıcıAdı = "admin",
Şifre = "password",
Email = "mert@mert.com"
};
context.Kullanıcılar.Add(kullanıcı);
context.SaveChanges();
base.Seed(context);
}
}
这是我的上下文构造函数:
public DemirbaşContext():base("Demirbaş")
{
Database.SetInitializer<DemirbaşContext>(new DbInitializer());
}
编辑 1:这是我当前的代码,但它仍然没有播种数据。你能看出有什么问题吗?
初始化器:
public class DbInitializer : DropCreateDatabaseIfModelChanges<DemirbaşContext>
{
protected override void Seed(DemirbaşContext context)
{
Kullanıcı kullanıcı = new Kullanıcı
{
Ad = "Mert",
Soyad = "Mert",
KullanıcıAdı = "admin",
Şifre = "password",
Email = "mert@mert.com"
};
context.Kullanıcılar.Add(kullanıcı);
context.SaveChanges();
}
}
应用程序启动:
public partial class App : Application
{
public App()
{
// Seed data, remove after getting seeding in custom db initiazlier to work
DemirbaşContext context = new DemirbaşContext();
DbInitializer initializer = new DbInitializer();
Database.SetInitializer<DemirbaşContext>(initializer);
context.Database.Initialize(false);
}
}