カスタム データベース初期化子を使用していくつかのデータをシードしようとしていますが、動作させることができません。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());
}
EDIT 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);
}
}