【发布时间】:2019-08-30 10:31:16
【问题描述】:
标记的重复问题使用自定义上下文,我使用默认的ApplicationDbContext。
我很困惑为什么每次运行 Update-Database 时都没有播种数据。我阅读了其他问题的答案,但不幸的是他们使用的是自定义上下文,我使用的是默认的ApplicationDbContext。他们似乎有相同的答案,但它们对我不起作用。
我已经完成了以下工作;
我有一个自定义初始化器:
public class PostInitializer : DropCreateDatabaseAlways<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext db)
{
var posts = new List<Post>
{
new Post()
{
Content = "TestA"
},
new Post()
{
Content = "TestB"
}
};
posts.ForEach(p => db.Posts.Add(p));
db.SaveChanges();
}
}
在我的全球 Asax 中:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// call PostInitializer here
Database.SetInitializer(new PostInitializer());
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
我的模特:
public class Post
{
[Key]
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public DateTime? DateTimeCreated { get; set; }
}
我已尝试删除数据库并在之后运行 Update-Database,但数据仍未播种。
【问题讨论】:
-
我认为在你的代码中的某个地方你必须调用 PostInitializer,这通常是在你使用的上下文中。
-
@BabakFakhriloo 我明白了。我将它放在 Application_Start() 方法的 Global.asax.cs 中。嗯,至少那些是我在网上看到的指南。
标签: c# asp.net-mvc entity-framework asp.net-mvc-4 initializer