无法使用EF Code First播种数据

时间:2015-04-23 01:38:30

标签: c# entity-framework ef-code-first

我发现了问题,解决方案就是评论。

我可以创建表格和图表,但我不能将数据播种到表格。

1.我安装了Nuget的EF。

2.从PM控制台我写了Enable-Migrations -EnableAutomaticMigrations。

模型是在All.Model类库和上下文方法都在All.Dal类库中我不明白我做错了什么可以帮助我吗?

这是我的上下文代码:

using All.Model;  

 namespace All.Dal  
 {
    public class AllDb : DbContext
    {
    public AllDb()
    {
        Database.Connection.ConnectionString = "Server=SEUPHORIA;Database=AllDb;UID=sa;PWD=123;";
    }

    public DbSet<Category> Categories { get; set; }
    public DbSet<Comment> Comments { get; set; }
    public DbSet<Line> Lines { get; set; }
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer<AllDb>(new DbStrategy());
        modelBuilder.Entity<Category>().Property(c => c.Name).IsRequired();
        modelBuilder.Entity<Comment>().Property(c => c.Letter).IsRequired();
    }
}

}

这是我的策略代码:

using All.Model;

namespace All.Dal
{
   public class DbStrategy : DropCreateDatabaseIfModelChanges<AllDb>
  {
      protected override void Seed(AllDb context)
    {
        List<Category> CategoryDefault = new List<Category> 
        {
            new Category { Name="Organic", UpID = 0 },
            new Category { Name="Object", UpID=0},
            new Category { Name="Time",UpID=0},
        };

        foreach (Category item in CategoryDefault)
        {
          context.Categories.Add(item);
        } context.Users.Add(new User { Name = "sss" });

    }
 }

}

这是我的类别类:

 public class Category : Standart
  {
    public int UpID { get; set; }
    public string Name { get; set; }
    public int LineID { get; set; }
    public virtual List<Line> Lines { get; set; }
 }

1 个答案:

答案 0 :(得分:1)

您正在将项目添加到数据库上下文中,但不会通过调用它们上的SaveChanges()来提交更改。只需添加以下一行:

protected override void Seed(AllDb context)
{
    List<Category> CategoryDefault = new List<Category> 
    {
        new Category { Name="Organic", UpID = 0 },
        new Category { Name="Object", UpID=0},
        new Category { Name="Time",UpID=0},
    };

    foreach (Category item in CategoryDefault)
    {
      context.Categories.Add(item);
    }
    context.Users.Add(new User { Name = "sss" });
    context.SaveChanges(); // make sure you save!
}