private IDesignTimeServices FindIDesignTimeServices(EFCoreDaoFactory factory) { var providerAssemblies = _providerAssemblies[factory.FactoryName]; foreach (var assembly in providerAssemblies) { foreach (Type type in assembly.ExportedTypes) { if (type.IsClass && type != typeof(IDesignTimeServices) && typeof(IDesignTimeServices).IsAssignableFrom(type)) { return((IDesignTimeServices)type.GetConstructor(new Type[] { }).Invoke(null)); } } } return(null); }
private EFCoreDao CreateDao(EFCoreDaoFactory factory, string assembly) { assembly = assembly ?? Assembly.GetEntryAssembly().GetName().Name; return((EFCoreDao)factory.CreateDao( options => { if (!string.IsNullOrWhiteSpace(assembly)) { var extensions = factory.dbContextOptions.Extensions; var extension = extensions.FirstOrDefault(e => typeof(RelationalOptionsExtension).IsAssignableFrom(e.GetType())); extension = ((RelationalOptionsExtension)extension).WithMigrationsAssembly(assembly); var builder = new DbContextOptionsBuilder <EFCoreDao>(); var newOptions = builder.Options.WithExtension(extension); return newOptions; } return options; }, //强制输入sessioncontext的环境变量,让dbcontext刷新OnModelCreating new SessionContext(_serviceProvider) )); }