Example #1
0
 public void TearDown()
 {
     CommandRunner.DeleteFile(Environment.CurrentDirectory + @"\TransferConfig.xml");
     SqlCommandRunner.DeleteDb(_Db1);
     SqlCommandRunner.DeleteDb(_Db2);
     CommandRunner.CleanUpDirectory(_TestTempDirectory);
 }
        public void ExecuteReader_Read_dynamically_and_unmapped_entity()
        {
            string tableName             = "tst_SCR_01";
            string createTableFormat     = "create table {0}(Id integer primary key autoincrement not null, Prop1 nvarchar(50) not null, Prop2 datetime);";
            string insertStatementFormat = "Insert into {0}(Prop1, Prop2) Values($prop1, $prop2);";

            var transaction = session.BeginTransaction();
            var dbConn      = session.ConnectionManager.OpenConnection();

            session.DataAccess.ExecuteNonQuery(dbConn, transaction, string.Format(createTableFormat, tableName));

            for (int i = 1; i < 6; i++)
            {
                session.DataAccess.ExecuteNonQuery(dbConn, transaction, string.Format(insertStatementFormat, tableName), new QueryParam("prop1", DbType.String)
                {
                    Value = string.Format("val{0}", i)
                }, new QueryParam("prop2", DbType.DateTime)
                {
                    Value = DateTime.Now.AddDays(i)
                });
            }

            session.CommitTransaction();
            string           query  = "select Id, Prop1, Prop2 from " + tableName + " where Prop1 = 'val2'";
            DynamicEntityMap dmap   = new DynamicEntityMap(null, tableName, typeof(SqlCommandRunnerTestsFake1));
            SqlCommandRunner runner = new SqlCommandRunner();

            SqlCommandRunnerTestsFake1 ent1 = runner.ExecuteReader <SqlCommandRunnerTestsFake1>(dmap, dbConn, session, query, null).FirstOrDefault();

            Assert.AreEqual("val2", ent1.Prop1);
        }
Example #3
0
        ICollection <T> RunQueryAndHydrate <T>()
        {
            SqlCommandRunner runner = new SqlCommandRunner();
            var query = Build();

            return(runner.RunList <T>(session, query, Parameters.ToArray()));
        }
Example #4
0
        public void Test1()
        {
            //获取并打印数据库中指定表的约束
            List <ConstraintInfo> cis = SqlCommandRunner.GetConstraintInfo(_MainTableName, _TempDbName);

            Assert.AreEqual(2, cis.Count);
            PrintConstraintInfo(cis);

            //放弃这些约束
            SqlCommandRunner.DropConstraintInfo(cis, _MainTableName, _TempDbName);
            List <ConstraintInfo> cis1 = SqlCommandRunner.GetConstraintInfo(_MainTableName, _TempDbName);

            Assert.AreEqual(0, cis1.Count);

            //重建约束
            SqlCommandRunner.RestoreConstraintInfo(cis, _MainTableName, _TempDbName);
            List <ConstraintInfo> cis2 = SqlCommandRunner.GetConstraintInfo(_MainTableName, _TempDbName);

            Assert.AreEqual(2, cis2.Count);
            PrintConstraintInfo(cis2);

            //比较约束
            for (int i = 0; i < 2; i++)
            {
                Assert.IsTrue(cis[i].Equals(cis2[i]));
            }
        }
Example #5
0
        public override int Execute()
        {
            //if it's a trackable entity and no changes where made, let's not waste our time running a query
            var trackable = entity as ITrackable;

            if (trackable != null && !trackable.IsDirty)
            {
                return(0);
            }

            var execList = Build();
            int total    = 0;
            var runner   = new SqlCommandRunner();
            var dialect  = session.SessionFactory.DbSettings.SqlDialect;

            //if(trackable != null)
            //{
            //    logger.Log(LogLevel.Debug, string.Format("changes found {0} ", trackable.ChangeTracker.GetChangedItems().Count));
            //}

            foreach (var update in execList.Statements.Values)
            {
                var parameters = new List <QueryParam>();
                parameters.AddRange(whereParameters);
                parameters.AddRange(update.Columns.Values.Select(p => p.Item1));
                total += runner.ExecuteNonQuery(session, update.ToString(dialect), parameters.ToArray());
            }

            foreach (var manyToManyOp in execList.ManyToManyStatements)
            {
                total += runner.ExecuteNonQuery(session, manyToManyOp.Item1, manyToManyOp.Item2.ToArray());
            }

            return(total);
        }
Example #6
0
        public T FetchOne <T>()
        {
            var runner = new SqlCommandRunner();
            var query  = Build();

            return(runner.Run <T>(session, query, Parameters.ToArray()));
        }
Example #7
0
        public void SetUp()
        {
            string currentPath = Environment.CurrentDirectory;

            StaticConfigTable.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
            StaticConfigTable.SetRunningConfigDefault();
            //构建临时数据文件夹
            _TestTempDirectory = ConfigurationManager.AppSettings["TestTempDirectory"];
            Assert.IsNotNull(_TestTempDirectory);
            _TestTempDirectory = DiskOperations.CorrectDirectory(_TestTempDirectory);
            DiskOperations.CheckAndCreateDirectory(_TestTempDirectory);

            //拷贝配置文件
            string theTransferRuleConfig = string.Format(@"{0}\..\..\TestResources\TransferConfig.xml", currentPath);

            Assert.IsTrue(File.Exists(theTransferRuleConfig));
            CommandRunner.CopyToDirectory(theTransferRuleConfig, currentPath);
            //还原2个数据库用于测试
            string rarFile = string.Format(@"{0}\..\..\TestResources\TestDbs.rar", currentPath);

            Assert.IsTrue(File.Exists(rarFile));
            CommandRunner.UnRarFileToDirectory(rarFile, _TestTempDirectory, true);
            Assert.IsTrue(File.Exists(_TestTempDirectory + "As_BackUp.bak"));
            Assert.IsTrue(File.Exists(_TestTempDirectory + "Crm_BackUp.bak"));
            SqlCommandRunner.RestoreDbFromFile(_Db1, _TestTempDirectory, _TestTempDirectory + "As_BackUp.bak");
            SqlCommandRunner.RestoreDbFromFile(_Db2, _TestTempDirectory, _TestTempDirectory + "Crm_BackUp.bak");
            //mock日志记录
            _MockITransferDataLog = new MockITransferDataLog();
            TransferDataLogManager.SetLogInstance = _MockITransferDataLog;
        }
Example #8
0
        public void Test3()
        {
            string targetName = string.Format("{0}{1}.bak", DiskOperations.CorrectDirectory(_TestTempDirectory), _TempDbName);

            SqlCommandRunner.BackUpDb(_TempDbName, targetName);
            Assert.IsTrue(File.Exists(targetName));
            CommandRunner.DeleteFile(targetName);
        }
Example #9
0
        private string PrintAllTableInfo(TransferRule aTr)
        {
            StringBuilder retVal = new StringBuilder();

            retVal.AppendLine(SqlCommandRunner.GetTableInfo(aTr.DbsToTransfer[0].TablesToTransfer[0].TableName, _TempDbName));
            retVal.AppendLine(SqlCommandRunner.GetTableInfo(aTr.DbsToTransfer[0].ProtectTableNames[0], _TempDbName));
            retVal.AppendLine(SqlCommandRunner.GetTableInfo(aTr.DbsToTransfer[0].ProtectTableNames[1], _TempDbName));
            return(retVal.ToString());
        }
Example #10
0
        private void DeleteAllTableData(string dbName)
        {
            StringBuilder sb = new StringBuilder();

            foreach (string tableName in SqlCommandRunner.GetAllTables(dbName))
            {
                sb.AppendLine(string.Format("delete from {0} ", tableName));
            }
            SqlCommandRunner.DelAllFks(_Db1);
            SqlCommandRunner.ExecuteNonQuery(new SqlCommand(sb.ToString()), dbName);
        }
Example #11
0
        public int Count()
        {
            if (ColumNames.Count < 1)
            {
                throw new InvalidOperationException("no columns has been selected");
            }

            var query  = Build(true);
            var runner = new SqlCommandRunner();

            return(runner.Run <int>(session, query, Parameters.ToArray()));
        }
Example #12
0
        public int Execute()
        {
            var updateBody      = Build();
            var runner          = new SqlCommandRunner();
            var localParameters = new List <QueryParam>();

            localParameters.AddRange(Parameters);
            localParameters.AddRange(updateBody.Columns.Values.Select(p => p.Item1));


            return(runner.ExecuteNonQuery(session, updateBody.ToString(dialect), localParameters.ToArray()));
        }
Example #13
0
        private int GetCountOfTable(string tableName, string dbName)
        {
            string command = string.Format("select count(*) as RetValue from {0}", tableName);

            using (SqlDataReader sdr = SqlCommandRunner.ExecuteReader(new SqlCommand(command), dbName))
            {
                while (sdr.Read())
                {
                    return(int.Parse(sdr["RetValue"].ToString()));
                }
            }
            throw new Exception("未找到行数量");
        }
Example #14
0
        private void MockChangment()
        {
            string sqlCommand = @"
            --修改tleaverequest的2行数据
            update tleaverequest set absentHours = 999
            --删除tleaverequestItem的1行数据
            delete tleaverequestitem where pkid = 2
            --增加/修改tleaverequestflow的4行数据
            update tleaverequestflow set operatorId = 99
            insert into tleaverequestflow(leaveRequestItemId,operatorId,operation,operationTime,remark)
            values(1,88,55,'2009-6-19','hello')";

            SqlCommandRunner.ExecuteNonQuery(new SqlCommand(sqlCommand), _TempDbName);
        }
Example #15
0
        private void MockAddLeaveRequest()
        {
            string sqlCommand = @"
            declare @id int
            insert into tleaverequest(accountid,leaverequesttypeid,reason,submitdate,absentfrom,absentto,absenthours,diyprocess)
            values(3,2,'','2009-6-9','2009-6-15','2009-6-15',8,'')
            select @id = SCOPE_IDENTITY()
            insert into tleaverequestitem(leaverequestid,status,absentfrom,absentto,absenthours,nextprocessid)
            values(@id,3,'2009-6-15','2009-6-15',8,3)
            select @id = SCOPE_IDENTITY()
            insert into tleaverequestflow(leaveRequestItemId,operatorId,operation,operationTime,remark)
            values(@id,88,55,'2009-6-9','hello')";

            SqlCommandRunner.ExecuteNonQuery(new SqlCommand(sqlCommand), _TempDbName);
        }
Example #16
0
        /// <summary>
        /// Executes this instance.
        /// </summary>
        /// <returns></returns>
        public override int Execute()
        {
            var execList = Build();
            int total    = 0;
            var runner   = new SqlCommandRunner();
            var dialect  = session.SessionFactory.DbSettings.SqlDialect;

            foreach (var del in execList.Statements.Values)
            {
                var parameters = new List <QueryParam>();
                parameters.AddRange(whereParameters);
                total += runner.ExecuteNonQuery(session, del.ToString(dialect), parameters.ToArray());
            }

            return(total);
        }
Example #17
0
        ICollection <T> RunQueryAndHydrateWithPaging <T>(out long total)
        {
            if (limit < 1)
            {
                limit = 0;
            }

            if (offset < 1)
            {
                offset = 0;
            }

            SqlCommandRunner runner = new SqlCommandRunner();
            var query = Build();

            return(runner.RunList <T>(session, query, limit, offset, out total, Parameters.ToArray()));
        }
        private void MockChangment()
        {
            //主表新增一行记录,修改一行记录,删除一行记录
            //附表1删除一行记录,附表2删除2行记录
            string sqlCommand = @"insert into tapplication(applicantid,applicantName,applicationDate,applicationFrom,ApplicationTo,CostTime,Status,Reason,Type,OvertimeType)
                                values(1,'','2008-10-2','2008-10-2','2008-10-2',4,1,'',1,1)
                                update tapplication
                                set applicantName = 'modifyByTester'
                                where pkid =278
                                delete tapplication 
                                where pkid = 279
                                delete tapplicationEmployee
                                where applicationId = 279
                                delete tapplicationFlow
                                where applicationId = 279";

            SqlCommandRunner.ExecuteNonQuery(new SqlCommand(sqlCommand), _TempDbName);
        }
Example #19
0
        public void SetUp()
        {
            //配置文件读取
            _ConnectionString  = ConfigurationManager.AppSettings["ConnectionString"];
            _TestTempDirectory = ConfigurationManager.AppSettings["TestTempDirectory"];
            Assert.IsNotNull(_ConnectionString);
            Assert.IsNotNull(_TestTempDirectory);
            StaticConfigTable.ConnectionString = _ConnectionString;
            DiskOperations.CheckAndCreateDirectory(DiskOperations.CorrectDirectory(_TestTempDirectory));
            //数据库资源路径
            string currentPath = Environment.CurrentDirectory;
            string theBackUpDb = string.Format(@"{0}\..\..\TestResources\TestApplicationFilterDb.bak", currentPath);

            Assert.IsTrue(File.Exists(theBackUpDb));
            //开始构建1数据库
            SqlCommandRunner.RestoreDbFromFile(_TempDbName, DiskOperations.CorrectDirectory(_TestTempDirectory), theBackUpDb);
            SqlCommandRunner.RestoreDbFromFile(_TempOtherDbName, DiskOperations.CorrectDirectory(_TestTempDirectory), theBackUpDb);
        }
Example #20
0
        int Execute(ISession session, InsertSqlInfo statement)
        {
            var sql        = statement.ToString(session.SessionFactory.DbSettings.SqlDialect);
            var cmdr       = new SqlCommandRunner();
            var parameters = new List <QueryParam>();

            parameters.AddRange(GeneratedKeys.Values);

            foreach (var queryParam in statement.Parameters)
            {
                if (!GeneratedKeys.ContainsKey(queryParam.Key))
                {
                    parameters.Add(queryParam.Value);
                }
            }

            return(cmdr.ExecuteNonQuery(session, sql, parameters.ToArray()));
        }
Example #21
0
        public void Test2()
        {
            //删除数据库1的一个表
            SqlCommandRunner.DropTable(_MainTableName, _TempOtherDbName);
            //表没有了,表信息就没有办法打印出来
            try
            {
                Console.WriteLine(SqlCommandRunner.GetTableInfo(_MainTableName, _TempOtherDbName));
                Assert.Fail();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            //拷贝数据库的表过来作为替换
            SqlCommandRunner.CopyTable(_MainTableName, _TempDbName, _TempOtherDbName);
            Console.WriteLine(SqlCommandRunner.GetTableInfo(_MainTableName, _TempOtherDbName));
        }
Example #22
0
        object Execute(ISession session, InsertSqlInfo statement, Type resultType)
        {
            if (resultType == null)
            {
                resultType = typeof(object);
            }

            var sql        = statement.ToString(session.SessionFactory.DbSettings.SqlDialect);
            var cmdr       = new SqlCommandRunner();
            var parameters = new List <QueryParam>();

            parameters.AddRange(GeneratedKeys.Values);

            foreach (var queryParam in statement.Parameters)
            {
                if (!GeneratedKeys.ContainsKey(queryParam.Key))
                {
                    parameters.Add(queryParam.Value);
                }
            }

            return(cmdr.ExecuteScalar(session, sql, resultType, parameters.ToArray()));
        }
Example #23
0
 public void TearDown()
 {
     SqlCommandRunner.DeleteDb(_TempDbName);
     SqlCommandRunner.DeleteDb(_TempOtherDbName);
 }