예제 #1
0
        private static DbContextInitializerBase CreateInitializer(DbContextInitializerConfig config)
        {
            Type initializerType = config.InitializerType;
            DbContextInitializerBase initializer = Activator.CreateInstance(initializerType) as DbContextInitializerBase;

            if (initializer == null)
            {
                throw new InvalidOperationException(Resources.DatabaseInitializer_TypeNotDatabaseInitializer.FormatWith(initializerType));
            }
            foreach (Assembly mapperAssembly in config.EntityMapperAssemblies)
            {
                if (initializer.MapperAssemblies.Contains(mapperAssembly))
                {
                    continue;
                }
                initializer.MapperAssemblies.Add(mapperAssembly);
            }
            dynamic dynamicInitializer = initializer;

            if (config.CreateDatabaseInitializerType != null)
            {
                dynamic createDatabaseInitializer = Activator.CreateInstance(config.CreateDatabaseInitializerType);
                dynamicInitializer.CreateDatabaseInitializer = createDatabaseInitializer;
            }
            return((DbContextInitializerBase)dynamicInitializer);
        }
예제 #2
0
 /// <summary>
 /// 初始化一个<see cref="DbContextConfig"/>类型的新实例
 /// </summary>
 internal DbContextConfig(ContextElement element)
 {
     Name = element.Name;
     Enabled = element.Enabled;
     DataLoggingEnabled = element.DataLoggingEnabled;
     ConnectionStringName = element.ConnectionStringName;
     ContextType = Type.GetType(element.ContextTypeName);
     InitializerConfig = new DbContextInitializerConfig(element.DbContextInitializer);
 }
예제 #3
0
        /// <summary>
        /// 获取或设置 实体映射程序集查找器
        ///     必须在配置文件中指定MapperAssembly,暂时不启用“生成默认配置文件”
        /// </summary>
        //public IEntityMapperAssemblyFinder MapperAssemblyFinder { get; set; }

        /// <summary>
        /// 开始初始化数据上下文
        /// </summary>
        /// <param name="config">数据库配置信息</param>
        public virtual void Initialize(DbContextInitializerConfig config)
        {
            DbContextInitializerBase initializer = CreateInitializer(config);

            DbContextManager.Instance.RegisterInitializer(initializer);
        }