簡體   English   中英

EF代碼優先的種子方法

[英]Seed Method in EF Code-First

我正在嘗試使用EF的Seed方法將一些示例數據填充到數據庫中,但是當我嘗試運行它時,並沒有填充數據。

有人知道為什么嗎? 謝謝。

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());

您根本不需要在全局文件中初始化數據庫。 您需要運行以下代碼:

EFloristEntities.Database.Initialize(true)

我建議,如果要使用自定義初始化程序,請將此代碼放在Database.SetInitializer(new CreateInitializer())調用下面。

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

在調用自己的Seed代碼之后,您似乎正在調用基本初始化程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM