using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
namespace WebApplication1.Data
{
///
/// 数据库初始化程序
///
public class DbInitializationProvider
{
///
/// 初始化
///
/// IServiceProvider
public static void Initialize(IServiceProvider services) where T : DbContext
{
var context = services.GetRequiredService();
if (context == null) throw new Exception("容器中未能找到 dbcontext 服务");
// 确保上下文数据库存在。 如果存在,则不采取任何措施。 如果它不存在,那么将创建数据库及其所有架构。
// 如果数据库存在,则不做任何努力以确保它与此上下文的模型兼容。
// 请注意,此API不使用迁移来创建数据库。 此外,创建的数据库以后无法使用迁移进行更新。 如果您以关系数据库为目标并使用迁移,则可以使用DbContext.Database.Migrate()方法来确保已创建数据库并应用了所有迁移。
// context.Database.EnsureCreated();
//判断是否有待迁移
if (context.Database.GetPendingMigrations().Any())
{
//执行迁移
context.Database.Migrate();
}
}
}
}