我想使用自定義數據庫初始值設定項來播種一些數據,但無法使其工作。我試着給appConfig文件添加一些配置,但是這也不起作用。在自定義數據庫初始值設定項中播種數據將不起作用/ EF,Code First
這是一個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 = "[email protected]"
};
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 = "[email protected]"
};
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);
}
}
*我試圖使用自定義數據庫初始值設定項來播種一些數據,但無法使其工作。我嘗試將一些配置添加到appConfig文件,但這也不起作用。*不是對問題的描述。每次我看到*它不工作*沒有解釋真正發生了什麼(例外,沒有數據庫,沒有數據等)我正在考慮downvoting和投票結束這個問題爲「不是一個真正的問題」。提出一個好的描述性問題是獲得答案的必要步驟。 – 2012-04-14 10:15:19
你說得對。我編輯了這個問題。我希望現在更清楚。 – 2012-04-14 12:36:10
你有沒有在你的應用程序中使用過EF?從數據庫加載東西或存儲到數據庫的東西? – 2012-04-14 13:03:14