【发布时间】:2015-07-30 20:27:09
【问题描述】:
我正在编写一个 MVC 5 互联网应用程序,并且需要一些帮助来执行种子方法以使用一些实体填充数据库。
这是我的DbContext 代码:
public class CanFindLocationDatabaseContext : DbContext
{
public class SystemInitializer : CreateDatabaseIfNotExists<CanFindLocationDatabaseContext>
{
protected override void Seed(CanFindLocationDatabaseContext context)
{
}
}
}
在我的Application_Start 方法中,我有以下代码:
System.Data.Entity.Database.SetInitializer<CanFindLocationDatabaseContext>(new CanFindLocation.Context.CanFindLocationDatabaseContext.SystemInitializer());
当我访问CanFindLocationDatabaseContext 类中的任何DbSet 对象时,不会执行种子方法。在我测试种子代码之前没有数据库。
正在创建数据库并正在创建表,但没有调用种子方法,并且任何表中都没有数据。
我在同一个项目中还有以下标识 2.1 的代码:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("CanFindLocationDatabaseContext", throwIfV1Schema: false)
{
}
}
为此 DbContext 类调用种子方法,但不为 CanFindLocationDatabaseContext 调用。
为什么会这样,我该如何编写代码以执行种子方法?
提前致谢。
【问题讨论】:
-
我假设您确定数据库不存在?
-
数据库不存在。
-
确保在启动调试之前重置 IIS 或停止 ASP Developpement 服务器,否则视觉不会停止并重新启动应用程序并阻止 Application_Start 执行。
标签: c# asp.net-mvc-5 entity-framework-6 dbcontext seeding