带标签的重复问题使用自定义上下文,我使用默认的ApplicationDbContext
。
我很困惑为什么每次运行Update-Database时都不会播种数据。我阅读了其他带有答案的问题,但不幸的是,它们使用的是自定义上下文,我使用的是默认的ApplicationDbContext
。他们似乎有相同的答案,但对我而言没有用。
我已经完成了以下工作;
我有一个自定义的Initializer:
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,但是仍然没有播种数据。
答案 0 :(得分:1)
编写您的Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
如下:
PostInitializer
然后注册如下:
public static class PostInitializer
{
public static void Seed()
{
using (ApplicationDbContext dbContext = new ApplicationDbContext())
{
if (dbContext.Database.Exists())
{
if(!dbContext.Posts.Any())
{
var posts = new List<Post>
{
new Post()
{
Content = "TestA"
},
new Post()
{
Content = "TestB"
}
};
posts.ForEach(p => dbContext.Posts.Add(p));
dbContext.SaveChanges();
}
}
}
}
}
答案 1 :(得分:0)
好吧,我不好。解决此问题的方法是运行应用程序。我以为播种会在更新数据库期间发生。这是对我有用的;