public void DMDBT_DropDatabase()
        {
            //以下代码不能运行,会提示数据库正在被使用
            using (var context = new DbMigrationContext(DbSetting.FindOrCreate("Test_TestingDataBase")))
            {
                //context.HistoryRepository = new DbHistoryRepository();
                context.RunDataLossOperation = DataLossOperation.All;

                if (context.DatabaseExists() && !(context.DbVersionProvider is EmbadedDbVersionProvider))
                {
                    //context.DeleteDatabase();
                    var database = new DestinationDatabase("Test_TestingDataBase")
                    {
                        Removed = true
                    };
                    context.MigrateTo(database);

                    //历史记录
                    var histories = context.GetHistories();
                    Assert.IsTrue(histories[0] is DropDatabase);

                    //数据库结构
                    Assert.IsTrue(!context.DatabaseExists());
                }

                context.ResetHistory();
            }
        }
        public void DMDBT_CreateDatabase()
        {
            using (var context = new DbMigrationContext(DbSetting.FindOrCreate("Test_TestingDataBase")))
            {
                //context.HistoryRepository = new HistoryRepository();
                context.RunDataLossOperation = DataLossOperation.All;

                if (!context.DatabaseExists())
                {
                    var destination = new DestinationDatabase("Test_TestingDataBase");
                    var tmpTable    = new Table("TestingTable", destination);
                    tmpTable.AddColumn("Id", DbType.Int32, isPrimaryKey: true);
                    tmpTable.AddColumn("Name", DbType.String);
                    destination.Tables.Add(tmpTable);

                    context.MigrateTo(destination);

                    //历史记录
                    //var histories = context.GetHistories();
                    //Assert.IsTrue(histories.Count == 3);
                    //Assert.IsTrue(histories[2] is CreateDatabase);

                    //数据库结构
                    Assert.IsTrue(context.DatabaseExists());
                }
            }
        }
예제 #3
0
        public void UtilsTest_Logger_ThreadDbAccessed()
        {
            var repo = RF.Concrete <TestUserRepository>();

            using (RF.TransactionScope(repo))
            {
                int count = 0;
                EventHandler <Logger.DbAccessedEventArgs> handler = (o, e) =>
                {
                    if (e.ConnectionSchema == RdbDataProvider.Get(repo).DbSetting)
                    {
                        count++;
                    }
                };
                Logger.ThreadDbAccessed += handler;

                repo.Save(new TestUser());

                Logger.ThreadDbAccessed -= handler;

                var p = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName).ProviderName;
                if (p == DbSetting.Provider_SqlClient)
                {
                    Assert.IsTrue(count == 1);//sqlServer= 1
                }
                else
                {
                    Assert.IsTrue(count == 2);//sqlce oracle=2
                }
            }
        }
예제 #4
0
        private void UnitTestPlugin_RuntimeStarting(object sender, EventArgs e)
        {
            var dbSetting = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);

            if (DbSetting.IsOracleProvider(dbSetting))
            {
                OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <BookRepository>());
                OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <InvoiceRepository>());
            }
        }
예제 #5
0
        public static void GenerateDb()
        {
            if (ConfigurationHelper.GetAppSettingOrDefault("单元测试-生成数据库", false))
            {
                using (var c = new RafyDbMigrationContext(DbSettingNames.DbMigrationHistory))
                {
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(DbSettingNames.RafyPlugins))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (RdbDataProvider.RedirectDbSetting(UnitTestEntityRepositoryDataProvider.DbSettingName,
                                                         UnitTestEntityRepositoryDataProvider.DbSettingName_Duplicate))
                {
                    using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName_Duplicate))
                    {
                        c.ClassMetaReader.EntityDbSettingName    = UnitTestEntityRepositoryDataProvider.DbSettingName;
                        c.ClassMetaReader.IsGeneratingForeignKey = false;
                        c.HistoryRepository    = new DbHistoryRepository();
                        c.RunDataLossOperation = DataLossOperation.All;
                        c.AutoMigrate();
                    }
                }
                using (var c = new RafyDbMigrationContext(UnitTest2EntityRepositoryDataProvider.DbSettingName))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(StringTestEntityDataProvider.DbSettingName))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }

                //启用批量更新
                var dbSetting = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);
                if (DbSetting.IsOracleProvider(dbSetting))
                {
                    OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <BookRepository>());
                    OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <InvoiceRepository>());
                }
            }
        }
예제 #6
0
 /// <summary>
 /// 如果配置文件的给connection加密属性设置为ture,那么程序运行会走这个方法
 /// 这个方法通过AES加解密来保护connection不被发现,默认的key是DBEN
 /// </summary>
 protected virtual void DecryptConnectionString()
 {
     if (ConfigurationHelper.GetAppSettingOrDefault("DBEN.DBI.Data.UseEncryptedConnectionString", false))
     {
         var settingName   = RBACPlugin.DbSettingName;                      // VATEnginePlugin.DbSettingName;
         var settings      = DbSetting.FindOrCreate(settingName);
         var encriptionStr = settings.ConnectionString;                     //获取connection
         var decriptionStr = DescriptAES.AESDecrypt(encriptionStr, "DBEN"); //解密后的connection
         DbSetting.SetSetting(settingName, decriptionStr, settings.ProviderName);
     }
 }
예제 #7
0
        private void UnitTestPlugin_RuntimeStarting(object sender, EventArgs e)
        {
            var dbSetting = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);

            if (DbSetting.IsOracleProvider(dbSetting))
            {
                Rafy.Domain.ORM.BatchSubmit.Oracle.OracleBatchImporter.EnableBatchSequence(
                    RF.Concrete <BookRepository>()
                    );
            }
        }
예제 #8
0
        //private void UnitTestPlugin_RuntimeStarting(object sender, EventArgs e)
        //{
        //    InitailizeSequences();
        //}

        public static void InitailizeSequences()
        {
            var dbSetting = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);

            if (DbSetting.IsOracleProvider(dbSetting))
            {
                OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <BookCategoryRepository>());
                OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <FolderRepository>());
                OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <BookRepository>());
                OracleBatchImporter.EnableBatchSequence(RF.ResolveInstance <InvoiceRepository>());
            }
        }
예제 #9
0
        protected override void ConfigMeta()
        {
            Meta.MapTable().MapAllProperties();

            Meta.EnableClientCache(100);
            Meta.EnableServerCache();

            var dbSettings = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);

            if (dbSettings.ProviderName == DbSetting.Provider_SQLite)
            {
                Meta.DeletingChildrenInMemory = true;
            }
        }
예제 #10
0
        public void DMT_AlterColumn_DbType_AutoMigrate()
        {
            this.Test(destination =>
            {
            }, result =>
            {
                var table  = result.FindTable("Task");
                var column = table.FindColumn("XmlContent");
                Assert.IsTrue(column != null);

                var p = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName).ProviderName;
                Assert.IsTrue(dbTypeConverter.IsCompatible(column.DbType, DbType.Xml));
            });
        }
예제 #11
0
        /// <summary>
        /// 配置实体的元数据
        /// </summary>
        protected override void ConfigMeta()
        {
            //配置实体的所有属性都映射到数据表中。
            Meta.MapTable().MapAllProperties();

            //Id 属性不再是主键,主键改为 Name 属性。
            var setting = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);

            Meta.Property(Building.NameProperty).MapColumn().IsPrimaryKey(true);
            var idColumn = Meta.Property(Building.IdProperty).MapColumn().IsPrimaryKey(false);

            if (DbSetting.IsOracleProvider(setting) || setting.ProviderName.Contains("MySql"))
            {
                idColumn.IsIdentity(false);
            }
        }
예제 #12
0
        public virtual List <OrganizationNotTree> GetByOrgIdAndUserNameContainChild(long orgId, string userName = "")
        {
            FormattedSql sql           = new FormattedSql();
            var          dbSettingName = RBACPlugin.DbSettingName;
            var          dbSetting     = DbSetting.FindOrCreate(dbSettingName);

            if (DbSetting.IsOracleProvider(dbSetting))
            {
                sql =
                    @"select oorg.Id,oorg.Name from T_RBAC_ORGANIZATION oorg
                LEFT JOIN T_RBAC_OrganizationUser ou on(oorg.id = ou.organizationid and ou.dbi_isphantom = 0)
                LEFT JOIN T_Users u on(u.id = ou.userid and u.dbi_isphantom = 0)
                where(oorg.dbi_isphantom = 0 or oorg.dbi_isphantom is null) and oorg.wf_approvalstatus = 300
                and oorg.treeindex like (select treeindex || '%' from T_RBAC_ORGANIZATION org where org.id = {0}) ";
            }
            else
            {
                sql =
                    @"select oorg.Id,oorg.Name from T_RBAC_ORGANIZATION oorg
                LEFT JOIN T_RBAC_OrganizationUser ou on(oorg.id = ou.organizationid and ou.dbi_isphantom = 0)
                LEFT JOIN T_Users u on(u.id = ou.userid and u.dbi_isphantom = 0)
                where(oorg.dbi_isphantom = 0 or oorg.dbi_isphantom is null) and oorg.wf_approvalstatus = 300
                and oorg.treeindex like (select treeindex + '%' from T_RBAC_ORGANIZATION org where org.id = {0}) ";
            }

            if (!string.IsNullOrEmpty(userName))
            {
                sql.Append(string.Format("and u.username = '******' ", userName));
            }
            sql.Parameters.Add(orgId);

            LiteDataTable dt = (this.DataQueryer as RdbDataQueryer).QueryTable(sql);
            List <OrganizationNotTree> result = new List <OrganizationNotTree>();

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (var row in dt.Rows)
                {
                    result.Add(new OrganizationNotTree {
                        Id = Convert.ToInt64(row["Id"]), Name = Convert.ToString(row["Name"])
                    });
                }
            }

            return(result);
            //return (OrganizationList)(this.DataQueryer as RdbDataQueryer).QueryData(sql);
        }
예제 #13
0
        public void DMT_AlterColumn_DataType()
        {
            this.Test(destination =>
            {
                var taskTable = destination.FindTable("Task");
                taskTable.Columns.Remove(taskTable.FindColumn("Name"));
                taskTable.AddColumn("Name", DbType.Xml);
            }, result =>
            {
                var table  = result.FindTable("Task");
                var column = table.FindColumn("Name");
                Assert.IsTrue(column != null);

                var p = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName).ProviderName;
                Assert.IsTrue(DbTypeHelper.IsCompatible(column.DataType, DbType.Xml));
            });
        }
예제 #14
0
        public static void GenerateDb()
        {
            if (ConfigurationHelper.GetAppSettingOrDefault("单元测试-生成数据库", false))
            {
                using (var c = new RafyDbMigrationContext(DbSettingNames.DbMigrationHistory))
                {
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(DbSettingNames.RafyPlugins))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(UnitTest2EntityRepositoryDataProvider.DbSettingName))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }
                using (var c = new RafyDbMigrationContext(StringTestEntityDataProvider.DbSettingName))
                {
                    c.HistoryRepository    = new DbHistoryRepository();
                    c.RunDataLossOperation = DataLossOperation.All;
                    c.AutoMigrate();
                }

                //启用批量更新
                var dbSetting = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);
                if (DbSetting.IsOracleProvider(dbSetting))
                {
                    OracleBatchImporter.EnableBatchSequence(RF.Concrete <BookRepository>());
                }
            }
        }
예제 #15
0
        public void UtilsTest_Logger_DbAccessedCount()
        {
            var repo = RF.Concrete <TestUserRepository>();

            using (RF.TransactionScope(repo))
            {
                var c1 = Logger.DbAccessedCount;
                repo.Save(new TestUser());

                var p = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName).ProviderName;
                if (p == DbSetting.Provider_SqlClient)
                {
                    Assert.IsTrue(Logger.DbAccessedCount == c1 + 1);
                }
                else
                {
                    Assert.IsTrue(Logger.DbAccessedCount == c1 + 2);
                }
            }
        }
예제 #16
0
        public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder)
        {
            // EntityFramework  Repository Context & Repositories
            var dbset = DbSetting.FindOrCreate("LCL");
            var efDataProviderManager = new EfDataProviderManager(dbset);
            var dataProvider          = efDataProviderManager.LoadDataProvider();

            dataProvider.InitConnectionFactory();
            builder.Register(c => dbset).As <DbSetting>();
            builder.Register <LclDbContext>(c => new EFTestContext(dbset.ConnectionString)).As(typeof(IRepositoryContext)).Named <IRepositoryContext>(dbset.Name).InstancePerLifetimeScope();
            builder.Register <IRepositoryContext>(c => new EFTestContext(dbset.ConnectionString)).Named <IRepositoryContext>(dbset.Name).InstancePerLifetimeScope();

            builder.RegisterType <CategorizationRepository>().As <ICategorizationRepository>().InstancePerLifetimeScope();
            builder.RegisterType <CategoryRepository>().As <ICategoryRepository>().InstancePerLifetimeScope();
            builder.RegisterType <ProductRepository>().As <IProductRepository>().InstancePerLifetimeScope();
            builder.RegisterType <SalesOrderRepository>().As <ISalesOrderRepository>().InstancePerLifetimeScope();
            builder.RegisterType <ShoppingCartItemRepository>().As <IShoppingCartItemRepository>().InstancePerLifetimeScope();
            builder.RegisterType <ShoppingCartRepository>().As <IShoppingCartRepository>().InstancePerLifetimeScope();
            builder.RegisterType <RoleRepository>().As <IRoleRepository>().InstancePerLifetimeScope();
            builder.RegisterType <UserRoleRepository>().As <IUserRoleRepository>().InstancePerLifetimeScope();
            builder.RegisterType <UserRepository>().As <IUserRepository>().InstancePerLifetimeScope();

            // Event Handlers
            builder.RegisterType <SendEmailHandler>().As <IEventHandler <OrderDispatchedEvent> >().InstancePerLifetimeScope();
            builder.RegisterType <SendEmailHandler>().As <IEventHandler <OrderConfirmedEvent> >().InstancePerLifetimeScope();

            // Domain Event Handlers
            builder.RegisterType <GetUserOrdersEvent>().As <IDomainEventHandler <GetUserOrdersEvent> >().InstancePerLifetimeScope();
            builder.RegisterType <OrderDispatchedEventHandler>().As <IDomainEventHandler <OrderDispatchedEvent> >().InstancePerLifetimeScope();
            builder.RegisterType <OrderConfirmedEventHandler>().As <IDomainEventHandler <OrderConfirmedEvent> >().InstancePerLifetimeScope();

            // Event Aggregator

            // Server
            builder.RegisterType <OrderService>().As <IOrderService>().InstancePerLifetimeScope();


            System.Diagnostics.Debug.WriteLine(Order + " init plugin LCL.Plugin.EasyUI.UCenter");
        }
예제 #17
0
 public RafyDbMigrationContext(string dbSetting) : this(DbSetting.FindOrCreate(dbSetting))
 {
 }
예제 #18
0
 /// <summary>
 /// 通过数据库配置名构造一个 单连接事务块。
 /// </summary>
 /// <param name="dbSetting"></param>
 /// <returns></returns>
 public static SingleConnectionTransactionScope TransactionScope(string dbSetting)
 {
     return(new SingleConnectionTransactionScope(DbSetting.FindOrCreate(dbSetting)));
 }
예제 #19
0
        /// <summary>
        /// 根据配置文件,构造一个数据库访问器。
        /// </summary>
        /// <param name="connectionStringSettingName"></param>
        /// <returns></returns>
        public static IDbAccesser Create(string connectionStringSettingName)
        {
            var setting = DbSetting.FindOrCreate(connectionStringSettingName);

            return(Create(setting));
        }
예제 #20
0
 public void MT_Transaction_GetCurrentTransactionBlock2()
 {
     using (var tranOuter = RF.TransactionScope(DbSettingNames.RafyPlugins))
     {
         using (var tranInner1 = RF.TransactionScope(DbSettingNames.RafyPlugins))
         {
             using (var tranInner2 = RF.TransactionScope(DbSettingNames.RafyPlugins))
             {
                 var currentScope = LocalTransactionBlock.GetCurrentTransactionBlock(DbSetting.FindOrCreate(DbSettingNames.RafyPlugins));
                 Assert.AreEqual(currentScope, tranInner2);
             }
         }
     }
 }
예제 #21
0
        private static bool IsTestDbSQLite()
        {
            var dbSettings = DbSetting.FindOrCreate(BackUpDbSettingName);

            return(dbSettings.ProviderName == DbSetting.Provider_SQLite);
        }
예제 #22
0
        /// <summary>
        /// 根据配置文件,构造一个数据库访问器。
        /// </summary>
        /// <param name="dbSettingName">数据库配置的名称。</param>
        /// <returns></returns>
        public static IDbAccesser Create(string dbSettingName)
        {
            var setting = DbSetting.FindOrCreate(dbSettingName);

            return(Create(setting));
        }
예제 #23
0
        internal static bool IsTestDbSQLite()
        {
            var dbSettings = DbSetting.FindOrCreate(UnitTestEntityRepositoryDataProvider.DbSettingName);

            return(dbSettings.ProviderName == DbSetting.Provider_SQLite);
        }