是否有适当的种子数据库方法?
我似乎无法找到任何文件来完成此任务。
答案 0 :(得分:4)
目前,您必须手动播种(但将来会有talk of a high level API)。
您可以在Configure
类的Startup
方法中执行此操作(假设您正在使用ASP.NET 5):
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory logger)
{
using (var context = (MyContext) app.ApplicationServices.GetService<MyContext>())
{
if (env.IsDevelopment())
{
//Add seed code here
context.MyEntity.Add(new MyEntity{ Id = 1 });
//etc
context.SaveChanges();
}
}
}
}
您还可以查看Music Store示例应用程序及其SampleData类,该类更具参与性和强大功能。
答案 1 :(得分:-1)
在public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
类的Startup
函数中,添加此
if (env.IsDevelopment())
{
app.UseBrowserLink();
SeedData.InitializeDatabaseAsync(app.ApplicationServices).Wait();
}
以下SeedData.InitializeDatabaseAsync
的实施
public class SeedData
{
public static async Task InitializeDatabaseAsync(IServiceProvider serviceProvider,
bool createUsers = true)
{
using (var serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var db = serviceScope.ServiceProvider.GetService<SampleDbContext>();
await db.Database.MigrateAsync();
using (db)
{
await InsertTestData(db);
}
}
}
private static async Task InsertTestData(SampleDbContextdbContext)
{
// seed data here
}
}
here上面提到的那些内容。希望这有帮助。