static void Main(string[] args) { //通过实体配置信息将实体注册到当前上下文 //Type contextType = GetType(); //修改osharp的注册方式 //var assembly = Assembly.GetEntryAssembly(); //IEnumerable<Type> registers = assembly.GetMappingTypes(typeof(IEntityRegister)); //foreach (var register in registers.Select(Activator.CreateInstance).Cast<IEntityRegister>()) //{ //} //foreach (var register in registers.Select(Activator.CreateInstance).Cast<IEntityRegister>()) //{ // register.RegisterTo(modelBuilder); // _logger?.LogDebug($"将实体类“{register.EntityType}”注册到上下文“{contextType}”中"); //} var a = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IEntityRegister)))) .ToArray(); foreach (var item in a) { IEntityRegister regis = (IEntityRegister)Activator.CreateInstance(item); var b = regis.DbContextType; //regis.RegisterTo(new ModelBuilder()); } Console.Read(); }
/// <summary> /// 创建上下文数据模型时,对各个实体类的数据库映射细节进行配置 /// </summary> /// <param name = "modelBuilder" > 上下文数据模型构建器 </ param > protected override void OnModelCreating(ModelBuilder modelBuilder) { var typesToRegister = _assembly.GetTypes() .Where(y => y.GetInterfaces().Contains(typeof(IEntityRegister))); foreach (var type in typesToRegister) { IEntityRegister configurationInstance = (IEntityRegister)Activator.CreateInstance(type); configurationInstance.RegisterTo(modelBuilder); } base.OnModelCreating(modelBuilder); }