一个种子实体框架7数据库怎么样?

时间:2015-07-24 14:10:18

标签: entity-framework-core

是否有适当的种子数据库方法?

我似乎无法找到任何文件来完成此任务。

2 个答案:

答案 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上面提到的那些内容。希望这有帮助。