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