예제 #1
0
        public override bool Execute()
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            AppDomain.CurrentDomain.TypeResolve     += CurrentDomain_AssemblyResolve;
            try
            {
                InPlaceConfigurationSource   src = new InPlaceConfigurationSource();
                IDictionary <string, string> cfg = new Dictionary <string, string>();
                cfg[Environment.Dialect]          = dialect;
                cfg[Environment.ConnectionDriver] = driver;
                cfg[Environment.ConnectionString] = connectionString;
                src.PluralizeTableNames           = PloralizeTableNames;

                src.Add(typeof(ActiveRecordBase), cfg);

                List <Assembly> loadedAssemblies = new List <Assembly>();
                foreach (ITaskItem assembly in assemblies)
                {
                    Assembly asm = Assembly.LoadFrom(assembly.ItemSpec);
                    loadedAssemblies.Add(asm);
                }

                ActiveRecordStarter.ResetInitializationFlag();
                ActiveRecordStarter.Initialize(loadedAssemblies.ToArray(), src);
                Configuration configuration = ActiveRecordMediator.GetSessionFactoryHolder().GetConfiguration(typeof(ActiveRecordBase));
                new SchemaExport(configuration).Execute(true, true, false);
            }
            finally
            {
                AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
                AppDomain.CurrentDomain.TypeResolve     -= CurrentDomain_AssemblyResolve;
            }

            return(true);
        }
예제 #2
0
        public override void InitializeContainerAndUowFactory()
        {
            if (IoC.IsInitialized)
            {
                IoC.Reset();
            }
            ActiveRecordStarter.ResetInitializationFlag();

            if (RhinoContainer != null)
            {
                IoC.Initialize(RhinoContainer);
            }

            if (IoC.IsInitialized && IoC.Container.Kernel.HasComponent(typeof(INHibernateInitializationAware)))
            {
                foreach (INHibernateInitializationAware initializer in IoC.ResolveAll <INHibernateInitializationAware>())
                {
                    initializer.BeforeInitialization();
                }
            }

            CallInitializationAwareConfigureIfExists();

            ActiveRecordStarter.Initialize(MappingInfo.MappingAssemblies, ActiveRecordConfigs);

            if (IoC.IsInitialized && IoC.Container.Kernel.HasComponent(typeof(INHibernateInitializationAware)))
            {
                foreach (INHibernateInitializationAware initializer in IoC.ResolveAll <INHibernateInitializationAware>())
                {
                    initializer.Initialized(Configuration, SessionFactory);
                }
            }

            ActiveRecordMediator.GetSessionFactoryHolder().RegisterSessionFactory(SessionFactory, typeof(ActiveRecordBase));
        }
예제 #3
0
        // overrides the setup in the base class
        public void Prepare()
        {
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(Blog), typeof(Post));

            ActiveRecordStarter.CreateSchema();

            Post.DeleteAll();
            Blog.DeleteAll();

            Blog blog = new Blog();

            blog.Name   = "hammett's blog";
            blog.Author = "hamilton verissimo";

            blog.Save();

            Post p;

            p = new Post(blog, "a", "b", "c");
            p.Save();

            p = new Post(blog, "d", "e", "c");
            p.Save();

            p = new Post(blog, "f", "g", "h");
            p.Save();
        }
예제 #4
0
        public virtual void InitFixture()
        {
            var source = ActiveRecordSectionHandler.Instance;

            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(Assembly.Load("TestSiteARSupport"), source);
        }
예제 #5
0
        public void InitDB(string FileDB)
        {
            ActiveRecordStarter.ResetInitializationFlag();

            IDictionary <string, string> properties = new Dictionary <string, string>
            {
                { "connection.driver_class", "NHibernate.Driver.SQLite20Driver" },
                { "dialect", "NHibernate.Dialect.SQLiteDialect" },
                { "connection.provider", "NHibernate.Connection.DriverConnectionProvider" },
                { "connection.connection_string", "Data Source=" + FileDB + ";locked=true" },
                {
                    "proxyfactory.factory_class",
                    @"NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"
                }
            };



            try
            {
                InPlaceConfigurationSource source = new InPlaceConfigurationSource();
                source.Add(typeof(ActiveRecordBase), properties);

                ActiveRecordStarter.Initialize(source, TestRequest_DBHelper.GetTypes());
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.ToString());
            }
        }
        /// <summary>
        /// Initialize Active Record, and initialize the container.
        /// If <paramref name="rhinoContainerConfig"/> is <see langword="null" /> or <see cref="string.Empty">string.Empty</see>
        /// a <see cref="RhinoContainer">RhinoContainer</see> will not be initialized.
        /// </summary>
        /// <param name="rhinoContainerConfig">The configuration file to initialize a <see cref="RhinoContainer">RhinoContainer</see>
        /// or <see langword="null" />.</param>
        /// <param name="cfg">The configuration to supply to AR</param>
        /// <param name="assemblies">The assemblies to load for NHibernate mapping files.</param>
        public void FixtureInitialize(string rhinoContainerConfig, InPlaceConfigurationSource cfg, params Assembly[] assemblies)
        {
            if (cfg == null)
            {
                throw new ArgumentNullException("cfg");
            }

            IoC.Reset();
            ActiveRecordStarter.ResetInitializationFlag();

            cfg.Add(typeof(ActiveRecordBase), CreateProperties());

            //here we either configure the IUnitOfWorkFactory appropriately (which calls ActiveRecordStarter)
            //or we configure ActiveRecordStarter ourselves

            if (!string.IsNullOrEmpty(rhinoContainerConfig))
            {
                if (!IoC.IsInitialized)
                {
                    IoC.Initialize(new RhinoContainer(rhinoContainerConfig));
                }
                IHandler unitOfWorkFactoryHandler = IoC.Container.Kernel
                                                    .GetHandler(typeof(IUnitOfWorkFactory));
                unitOfWorkFactoryHandler
                .AddCustomDependencyValue("configurationSource", cfg);
                unitOfWorkFactoryHandler
                .AddCustomDependencyValue("assemblies", assemblies);
                IoC.Resolve <IUnitOfWorkFactory>().Init();
            }
            else
            {
                ActiveRecordStarter.Initialize(assemblies, cfg);
            }
        }
        private void InitializeFramework(ArrayList assemblies)
        {
            log.Info("Initializing ActiveRecord Framework");

            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.SessionFactoryHolderCreated += new SessionFactoryHolderDelegate(OnSessionFactoryHolderCreated);

            try
            {
                ConfigurationSourceAdapter adapter = new ConfigurationSourceAdapter(FacilityConfig);

                if (log.IsDebugEnabled)
                {
                    log.Debug("Is Debug enabled {0}", adapter.Debug);
                    log.Debug("ThreadScopeInfo {0}", adapter.ThreadScopeInfoImplementation);
                    log.Debug("NamingStrategy {0}", adapter.NamingStrategyImplementation);
                    log.Debug("SessionFactoryHolder {0}", adapter.SessionFactoryHolderImplementation);
                }

                ActiveRecordStarter.Initialize(
                    (Assembly[])assemblies.ToArray(typeof(Assembly)), adapter);
            }
            finally
            {
                ActiveRecordStarter.SessionFactoryHolderCreated -= new SessionFactoryHolderDelegate(OnSessionFactoryHolderCreated);
            }
        }
        public void TestFixtureSetUp()
        {
            var configurationSource = new XmlConfigurationSource("ActiveRecord.cfg.xml");

            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(typeof(Customer).Assembly, configurationSource);
        }
        public void RootTypeIsNotAbstract()
        {
            ActiveRecordStarter.ResetInitializationFlag();

            ActiveRecordStarter.Initialize(GetConfigSource(),
                                           typeof(NonAbstractRootType));
        }
        private void DoInitialization()
        {
            if (InitializationAware == null && IoC.IsInitialized)
            {
                if (IoC.Container.Kernel.HasComponent(typeof(INHibernateInitializationAware)))
                {
                    InitializationAware = IoC.ResolveAll <INHibernateInitializationAware>();
                }
            }

            List <Type> registerdTypes = new List <Type>();

            ActiveRecordStarter.SessionFactoryHolderCreated += delegate(ISessionFactoryHolder holder)
            {
                holder.OnRootTypeRegistered += delegate(object sender, Type rootType)
                {
                    registerdTypes.Add(rootType);
                };
            };

            ActiveRecordStarter.MappingRegisteredInConfiguration += delegate(ISessionFactoryHolder holder)
            {
                if (InitializationAware != null)
                {
                    foreach (Configuration cfg in holder.GetAllConfigurations())
                    {
                        foreach (INHibernateInitializationAware initializer in InitializationAware)
                        {
                            initializer.Configured(cfg);
                        }
                    }
                }
            };

            ActiveRecordStarter.ResetInitializationFlag();
            if (InitializationAware != null)
            {
                foreach (INHibernateInitializationAware hibernateInitializationAware in InitializationAware)
                {
                    hibernateInitializationAware.BeforeInitialization();
                }
            }

            ActiveRecordStarter.Initialize(assemblies, configurationSource);
            ISessionFactoryHolder sessionFactoryHolder = ActiveRecordMediator.GetSessionFactoryHolder();

            if (InitializationAware != null)
            {
                foreach (Type type in registerdTypes)
                {
                    Configuration   configuration = sessionFactoryHolder.GetConfiguration(type);
                    ISessionFactory factory       = sessionFactoryHolder.GetSessionFactory(type);
                    foreach (INHibernateInitializationAware initializer in InitializationAware)
                    {
                        initializer.Initialized(configuration, factory);
                    }
                }
            }
        }
        public new void Init()
        {
            ActiveRecordStarter.ResetInitializationFlag();

            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(GenericNullableModel), typeof(SurveyAssociation));

            Recreate();
        }
예제 #12
0
        public static void CarregarEntidades()
        {
            List <Assembly> assemblies = new List <Assembly>();

            assemblies.Add(Assembly.Load("Licitar.Business"));
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(assemblies.ToArray(), Conexao.GetConfigSource());
        }
예제 #13
0
        public void Initialize()
        {
            List <Assembly> assemblies = new List <Assembly>();

            assemblies.Add(Assembly.Load(_ActiveRecordClassesAssemblyName));
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(assemblies.ToArray(), _GetConfigSource());
        }
예제 #14
0
        private void switchDB()
        {
            ActiveRecordStarter.ResetInitializationFlag();

            // 获取数据库连接配置
            IConfigurationSource source = new Castle.ActiveRecord.Framework.Config.XmlConfigurationSource("../../TestCases/ActiveRecordConfig_1.xml");

            // 载入程序集中所有 ActiveRecord 类。
            ActiveRecordStarter.Initialize(source, typeof(ActiveRecordBase), typeof(TestBase1), typeof(TestBase2),
                                           typeof(Question), typeof(UserData), typeof(User1), typeof(User2));
        }
예제 #15
0
        public void InitialiseAR()
        {
            ActiveRecordStarter.ResetInitializationFlag();
            IConfigurationSource source = new
                                          XmlConfigurationSource("ActiveRecordConfig.xml");
            Assembly asm1 = Assembly.Load("Com.GainWinSoft.ERP.Entity");

            ActiveRecordStarter.Initialize(
                asm1,
                source);
        }
        public void VerificationOffWithMissingFieldError()
        {
            // Create the tables first
            XmlConfigurationSource config = (XmlConfigurationSource)GetConfigSource();

            config.VerifyModelsAgainstDBSchema = false;
            ActiveRecordStarter.Initialize(config, typeof(ModelClassUsedToCreateTableForClassWithBrokenField));
            Recreate();

            // Then test Broken field
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(config, typeof(ModelClassWithBrokenField));
        }
        public void SaveWithBadTableSchemaThrowsException()
        {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(ModelClassUsedToCreateTableForClassWithBrokenField));
            Recreate();

            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(ModelClassWithBrokenField));

            ModelClassWithBrokenField brokenClass = new ModelClassWithBrokenField();

            brokenClass.Broken = true;
            brokenClass.Save();
        }
        public void VerificationOnWithNoError()
        {
            // Create the tables first
            XmlConfigurationSource config = (XmlConfigurationSource)GetConfigSource();

            config.VerifyModelsAgainstDBSchema = false;
            ActiveRecordStarter.Initialize(config, typeof(Blog), typeof(Post));
            Recreate();

            // Then run again with verification
            config.VerifyModelsAgainstDBSchema = true;
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(config, typeof(Blog), typeof(Post));
        }
        public void WillUseRegisteredAssembliesToLookForRawMappingXmlEvenIfThereAreNoActiveRecordTypesInThatAssembly()
        {
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(
                typeof(RegisterNHibernateClassMapping).Assembly,
                GetConfigSource()
                );
            ISessionFactory factory = ActiveRecordMediator.GetSessionFactoryHolder()
                                      .GetSessionFactory(typeof(ActiveRecordBase));
            IClassMetadata metadata = factory
                                      .GetClassMetadata(typeof(NHibernateClass));

            Assert.IsNotNull(metadata);
        }
예제 #20
0
        public void Finalizar()
        {
            if (Convert.ToBoolean(ConfigurationManager.AppSettings["LimparDadosAposGeracao"]))
            {
                DbCommand cmdExclusaoRegistros = UndTrabalho.DBArquivoSpedFiscal.GetSqlStringCommand(
                    SqlExpressionsFiscalRepository.GetDeleteRegistrosGerados());
                UndTrabalho.AddParameterToCommand(cmdExclusaoRegistros, "@NR_ARQUIVO",
                                                  DbType.Int32, this._NumeroIdentificacaoArquivo);
                UndTrabalho.DBArquivoSpedFiscal.ExecuteNonQuery(cmdExclusaoRegistros);
            }

            ActiveRecordStarter.ResetInitializationFlag();
            this._informacoesArquivo.CaminhoArquivo = UndTrabalho.CaminhoArquivo;
            this._informacoesArquivo.HorarioTerminoGeracaoArquivo = DateTime.Now;
            this._informacoesArquivo.Save();
        }
		public void AbstractClassTableName()
		{
			ActiveRecordStarter.ResetInitializationFlag();
			Assert.IsTrue(NHibernate.Cfg.Environment.UseReflectionOptimizer);

			ActiveRecordStarter.Initialize(GetConfigSource(),
										   typeof(AbstractClass<>),
										   typeof(ConcreteClass));
			Assert.IsFalse(NHibernate.Cfg.Environment.UseReflectionOptimizer);

			Recreate();

			ConcreteClass c = new ConcreteClass();

			c.Save();

			Assert.IsTrue(ConcreteClass.FindAll().Length == 1);
		}
예제 #22
0
        public new void Init()
        {
            ActiveRecordStarter.ResetInitializationFlag();

            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(Blog), typeof(Post));

            Recreate();

            var blog = new Blog()
            {
                Author = "Horatio", Name = "Murmurs"
            };

            blog.Save();

            var post = new Post(blog, "To Be Or Not To Be", "Nonsense", "monologues");

            post.Save();
        }
예제 #23
0
        public new void Init()
        {
            ActiveRecordStarter.ResetInitializationFlag();
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(ProductWithGuid));

            Recreate();

            var product1 = new ProductWithGuid {
                Key = Key1
            };

            product1.Save();

            var product2 = new ProductWithGuid {
                Key = Key2
            };

            product2.Save();
        }
		public void Setup()
		{
			ActiveRecordStarter.ResetInitializationFlag();

			ActiveRecordStarter.Initialize(GetConfigSource(),
			                               typeof(Blog),
			                               typeof(Post),
			                               typeof(Company),
			                               typeof(Award),
			                               typeof(Employee),
			                               typeof(Person));
			Recreate();

			Post.DeleteAll();
			Blog.DeleteAll();
			Company.DeleteAll();
			Award.DeleteAll();
			Employee.DeleteAll();
		}
예제 #25
0
        /// <summary>
        /// The common test setup code. To activate it in a specific test framework,
        /// it must be called from a framework-specific setup-Method.
        /// </summary>
        public virtual void SetUp()
        {
            ActiveRecordStarter.ResetInitializationFlag();
            Dictionary <string, string> properties = new Dictionary <string, string>();

            properties.Add("connection.driver_class", "NHibernate.Driver.SQLite20Driver");
            properties.Add("dialect", "NHibernate.Dialect.SQLiteDialect");
            properties.Add("connection.provider", typeof(InMemoryConnectionProvider).AssemblyQualifiedName);
            properties.Add("connection.connection_string", "Data Source=:memory:;Version=3;New=True");
            properties.Add("proxyfactory.factory_class", "Castle.ActiveRecord.ByteCode.ProxyFactoryFactory, Castle.ActiveRecord");
            foreach (var p in GetProperties())
            {
                properties[p.Key] = p.Value;
            }

            var config = new InPlaceConfigurationSource();

            config.Add(typeof(ActiveRecordBase), properties);
            foreach (var type in GetAdditionalBaseClasses())
            {
                config.Add(type, properties);
            }
            Configure(config);

            var types      = GetTypes();
            var assemblies = GetAssemblies();

            if (types == null)
            {
                types = new Type[0];
            }
            if (assemblies == null)
            {
                assemblies = new Assembly[0];
            }

            ActiveRecordStarter.Initialize(assemblies, config, types);
            ActiveRecordStarter.CreateSchema();
        }
예제 #26
0
        private void PerformActiveRecordInitialization <T>()
        {
            ActiveRecordStarter.ResetInitializationFlag();
            var src        = new Castle.ActiveRecord.Framework.Config.InPlaceConfigurationSource();
            var properties = new Dictionary <string, string>();

            //     < add key = "hibernate.connection.provider" value = "NHibernate.Connection.DriverConnectionProvider" />
            properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver");
            properties.Add("dialect", "NHibernate.Dialect.MsSql2008Dialect");
            properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");
            properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
            properties.Add("connection.connection_string", "UID=felix;Password=rollhide;Initial Catalog=ENSRC020419DEVAD17;Data Source=172.21.5.3,1435");
            properties.Add("show_sql", "true");
            properties.Add("query.startup_check", "false");
            src.Add(typeof(ActiveRecordBase), properties);

            Type[] types = GetAllTypes().ToArray();

            ActiveRecordStarter.Initialize(src, types);

            // var itm = src.GetConfiguration(typeof(ActiveRecordBase));
        }
예제 #27
0
        private void btnConnect_Click(object sender, EventArgs e)
        {
            ActiveRecordStarter.ResetInitializationFlag();

            IDictionary <string, string> properties = new Dictionary <string, string>
            {
                { "connection.driver_class", "NHibernate.Driver.SqlClientDriver" },
                { "dialect", "NHibernate.Dialect.MsSql2008Dialect" },
                { "connection.provider", "NHibernate.Connection.DriverConnectionProvider" },


                //Catalog Name Table. Как создать БД с помощью метода ActiveRecordStarter.CreateSchema();
                //пока выяснить не удалось но CreateSchema() прекрасно добавляет таблицы к БД
                { "connection.connection_string", "Data Source=PC;Initial Catalog=vvv;Integrated Security=True" },
                {
                    "proxyfactory.factory_class",
                    @"NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"
                }
            };



            try
            {
                InPlaceConfigurationSource source = new InPlaceConfigurationSource();
                source.Add(typeof(ActiveRecordBase), properties);

                ActiveRecordStarter.Initialize(source, MainDBHelper.GetTypes());

                ActiveRecordStarter.CreateSchema();
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.ToString());
            }
        }
예제 #28
0
 public virtual void Init()
 {
     ActiveRecordStarter.ResetInitializationFlag();
 }
예제 #29
0
 /// <summary>
 /// The common test teardown code. To activate it in a specific test framework,
 /// it must be called from a framework-specific teardown-Method.
 /// </summary>
 public virtual void TearDown()
 {
     ActiveRecordStarter.ResetInitializationFlag();
     InMemoryConnectionProvider.Restart();
 }
예제 #30
0
 public void SetUp()
 {
     ActiveRecordStarter.ResetInitializationFlag();
 }