C# 未对更新数据库、实体框架6调用种子方法
我有以下DbContext类。关于EF的一切都在进行良好的迁移、关系等,唯一对我不起作用的是播种。我尝试过许多不同的解决方案,但似乎都不管用。有人有主意吗 当我运行updatedatabase时,它似乎在执行seed方法,但数据库中没有更新任何内容C# 未对更新数据库、实体框架6调用种子方法,c#,sql-server,database,entity-framework,C#,Sql Server,Database,Entity Framework,我有以下DbContext类。关于EF的一切都在进行良好的迁移、关系等,唯一对我不起作用的是播种。我尝试过许多不同的解决方案,但似乎都不管用。有人有主意吗 当我运行updatedatabase时,它似乎在执行seed方法,但数据库中没有更新任何内容 public class ProgramContext : DbContext { public ProgramContext() : base("ProgramContext") { Database.SetInit
public class ProgramContext : DbContext
{
public ProgramContext() : base("ProgramContext")
{
Database.SetInitializer<ProgramContext>(new MyDbInit());
}
public DbSet<Bin> Bins { get; set; }
public DbSet<Goal> Goals { get; set; }
public DbSet<Queue> Queues { get; set; }
public DbSet<Status> Statuses { get; set; }
public class MyDbInit : DropCreateDatabaseIfModelChanges<ProgramContext>
{
protected override void Seed(ProgramContext context)
{
IList<Status> statuses = new List<Status>();
Status status0 = new Status("WH-RAMP");
Status status1 = new Status("Transport > Lijn");
Status status2 = new Status("In lijn");
Status status3 = new Status("Retour lijn");
Status status4 = new Status("Transport > WH");
context.Statuses.Add(status0);
context.SaveChanges();
base.Seed(context);
}
}
}
等级
public class Status
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long StatusId { get; set; }
public string StatusName { get; set; }
public Status(string StatusName)
{
this.StatusName = StatusName;
}
}
DropCreateDatabaseIfModelChanges
IDatabaseInitializer的一种实现,仅当数据库创建后模型已更改时,才会删除、重新创建数据库并可选地重新为其设定种子
这可能会有帮助。配置类位于migrations文件夹中
internal sealed class Configuration : DbMigrationsConfiguration<BookService.Models.BookServiceContext>
{
protected override void Seed(BookService.Models.BookServiceContext context)
{
Status status0 = new Status("WH-RAMP");
Status status1 = new Status("Transport> Lijn");
Status status2 = new Status("In lijn");
Status status3 = new Status("Retour lijn");
Status status4 = new Status("Transport > WH");
context.Statuses.Add(status0);
context.Statuses.Add(status1);
context.Statuses.Add(status2);
context.Statuses.Add(status3);
context.Statuses.Add(status4);
}
}
您不需要调用SaveChanges,只需使用seed即可required@EhsanSajjad不幸的是,这不是答案。你确定有实际的模型更改,即在过程中是否删除并重新创建了数据库?还尝试了其他类,似乎没有任何效果。这对我有效,我将稍后尝试DropDatabaseAlways和其他类。谢谢:
internal sealed class Configuration : DbMigrationsConfiguration<BookService.Models.BookServiceContext>
{
protected override void Seed(BookService.Models.BookServiceContext context)
{
Status status0 = new Status("WH-RAMP");
Status status1 = new Status("Transport> Lijn");
Status status2 = new Status("In lijn");
Status status3 = new Status("Retour lijn");
Status status4 = new Status("Transport > WH");
context.Statuses.Add(status0);
context.Statuses.Add(status1);
context.Statuses.Add(status2);
context.Statuses.Add(status3);
context.Statuses.Add(status4);
}
}