2012-12-17 31 views
1

我想用EF的Seed方法來填充我的數據庫中的一些樣本數據,但是當我嘗試運行它時,數據沒有被填充。EF代碼中的種子方法 - 首先

任何人都知道爲什麼? 謝謝。

的DbContext:

public void Seed(EFloristEntities context) 
{ 
    new List<Product> 
    { 
     new Product() { Id = 1, ProductName = "Product 1", ProductDescription = "a", Price = 1.0} 
    }.ForEach(i => context.Products.Add(i)); 

    context.SaveChanges(); 
} 

public DbSet<Product> Products { get; set; } 
public DbSet<Order> Orders { get; set; } 
public DbSet<OrderDetails> OrderDetails { get; set; } 
public DbSet<Cart> Cart { get; set; } 

我的初始化程序:

public class CreateInitializer : CreateDatabaseIfNotExists<EFloristEntities> 
{ 
    protected override void Seed(EFloristEntities context) 
    { 
     context.Seed(context); 

     base.Seed(context); 
    } 
} 

Global.aspx:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EFloristEntities>()); 
new EFloristEntities().Database.CreateIfNotExists(); 

Database.SetInitializer(new CreateInitializer()); 
+0

db是否存在? – humblelistener

+0

是啊它的本地.mdf – user1513932

+0

Ehm ...'global.aspx'? :) – Bart

回答

0

你沒有初始化數據庫都在你的全局文件。您需要運行下面的代碼:

EFloristEntities.Database.Initialize(true)

而且我會建議,如果你想使用自定義的初始化,您將這段代碼中調用Database.SetInitializer(new CreateInitializer())下。

+0

我測試這沒有成功:(使用(var上下文=新EFloristEntities()) { context.Database.Initialize(true); } – user1513932

+0

您的數據庫是否已經創建?如果是這樣,你需要使用不同的初始化程序(如上面的@kpadmanabhan) – IronMan84

0

您已將初始化器配置爲使用DropCreateDatabaseIfModelChanges。嘗試用DropCreateDatabaseAlways替換一次。

0

看起來你是在調用自己的種子代碼之後調用基礎初始化程序。