Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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)
                ));
 }