我想用EF代碼優先建立一個基於WPF數據庫的應用程序。我有一個不產生數據庫的問題,我試圖解決這樣的:C#實體框架沒有初始化數據庫
using (var db = new MyDBContext())
{
db.Database.Initialize(true);
}
我插在App.xamls.cs
這個代碼,重寫OnStartup
方法(這工作)。
然後我試圖種子一些默認的數據是這樣的:
public class MyDBContextSeeder : DropCreateDatabaseAlways<MyDBContext>
{
protected override void Seed(MyDBContext context)
{
IList<Dog> defaultDog = new List<Dog>();
defaultDog.Add(new Dog("Spike"));
foreach (Dog d in defaultDog)
context.Dogs.Add(d);
// more data here....
base.Seed(context);
}
}
而且,由於我使用的是自定義的初始化,我已經改變了我的第一個代碼上面是這樣的:
using (var db = new PizzeriaDBContext())
{
new MyDBContextSeeder().InitializeDatabase(db); //this line
db.Database.Initialize(true);
}
現在
的問題是:
當我建立我的應用我的默認數據未插入。我很確定。
,如果我再次嘗試建立我的申請,我有這樣的例外:
狗實體已經在數據庫中。
遷移已啓用。
我已經嘗試刪除db.Database.Initialize(true)
,但是當我這樣做時,我的數據庫甚至沒有創建。
你做一個Add-遷移或已啓用自動遷移?種子方法僅在遷移時運行。 – mrsargent
@mrsargent是否指在控制檯中鍵入Add-Migration時生成的'InitialCreate:DbMigration'類?如果是這樣,是的。並且'Configuration.cs'中也有'AutomaticMigrationsEnabled = true;' – Koosshh56
什麼是數據庫連接字符串? '如果我試圖再次構建我的應用程序,我有一個異常,如:狗實體已經在數據庫中'看起來像我正在進入你不期望的地方。 – teynon