Пример #1
0
        public void DeleteTicketByRowId(int rowId)
        {
            String           query = String.Format("DELETE FROM [dbo].[tbTickets] where TicketId ={0}", rowId);
            DataAccessClient da    = new DataAccessClient();

            da.ExecuteQuery(ConnectionString, query);
        }
Пример #2
0
        public async Task Update_address()
        {
            // arrange
            var customer = NewCustomer();

            // act
            await DataAccessClient.CreateCustomerAsync(customer);

            var address = new AddressRecord {
                Label  = "Work",
                Street = "101 W. Broadway",
                City   = "San Diego",
                State  = "CA"
            };
            await DataAccessClient.AddOrUpdateAddressAsync(customer.Username, address);

            var result = await Table.GetItemAsync(customer.GetPrimaryKey(), consistentRead : true);

            // assert
            result.Username.Should().Be(customer.Username);
            result.Name.Should().Be(customer.Name);
            result.EmailAddress.Should().Be(customer.EmailAddress);
            result.Addresses.Should().NotBeEmpty();
            result.Addresses.Should().ContainKey("Work");
            result.Addresses["Work"].Should().BeEquivalentTo(address);
        }
Пример #3
0
        public string CreateNewTicket(string emailId, string ticketDesc, string ticketType)
        {
            StringBuilder    strResult    = new StringBuilder();
            DataSet          DataInserted = new DataSet();
            DataAccessClient client       = new DataAccessClient();
            string           spname       = "[dbo].[uspInsertNewTicket]";

            SqlParameter[] paramsall = new SqlParameter[3];

            SqlParameter spmEmaildId = new SqlParameter("@emailId", SqlDbType.NVarChar, 100);

            spmEmaildId.Value = emailId;

            SqlParameter spmTickDesc = new SqlParameter("@ticketDesc", SqlDbType.NVarChar, 4000);

            spmTickDesc.Value = ticketDesc;

            SqlParameter spmTicketType = new SqlParameter("@ticketType", SqlDbType.NVarChar, 15);

            spmTicketType.Value = ticketType;

            paramsall[0] = spmEmaildId;
            paramsall[1] = spmTickDesc;
            paramsall[2] = spmTicketType;
            try
            {
                DataInserted = client.ExecuteStoredProc(spname, ConnectionString, paramsall);
                return("Success");
            }
            catch (Exception e)
            {
                return(string.Empty);
            }
        }
Пример #4
0
        public void UpdateTicketDetails(string tDesc, string status, string assignedTo, int ticketId)
        {
            String query = String.Format("Update [dbo].[tbTickets] SET TicketDesc = '{0}', Status = '{1}', [AssignedTo]= "
                                         + "(SELECT Id from [TrackerDB].[dbo].[tbUser] WHERE UserName ='******') WHERE TicketId = {3}", tDesc, status, assignedTo, ticketId);
            DataAccessClient da = new DataAccessClient();

            da.ExecuteQuery(ConnectionString, query);
        }
Пример #5
0
        public DataSet GetTicketDetails()
        {
            string  query = string.Empty;
            DataSet ds    = new DataSet();

            query = "SELECT [TicketId],[TicketDesc],[Status],[IsActive],[AssignedTo] FROM[TrackerDB].[dbo].[vwGetTicketList]";
            DataAccessClient da = new DataAccessClient();

            ds = da.ExecuteQuery(ConnectionString, query);
            return(ds);
        }
Пример #6
0
        public async Task Create_customer_record()
        {
            // arrange
            var customer = NewCustomer();

            // act
            await DataAccessClient.CreateCustomerAsync(customer);

            var result = await Table.GetItemAsync(customer.GetPrimaryKey(), consistentRead : true);

            // assert
            result.Should().BeEquivalentTo(customer);
        }
        public async Task PutItem_with_condition_failed()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            // act
            var result = await Table.PutItem(customer.GetPrimaryKey(), customer)
                         .WithCondition(record => DynamoCondition.DoesNotExist(record))
                         .ExecuteAsync();

            // assert
            result.Should().BeFalse();
        }
        public async Task DeleteItem_with_condition_failed()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            // act
            var result = await Table.DeleteItem(customer.GetPrimaryKey())
                         .WithCondition(record => record.Name == "Bob")
                         .ExecuteAsync();

            // assert
            result.Should().BeFalse();
        }
        public async Task UpdateItem_with_condition_failed()
        {
            // arrange
            var customer = NewCustomer();

            var(order, items) = NewOrder(customer.Username);
            await DataAccessClient.CreateCustomerAsync(customer);

            await DataAccessClient.SaveOrderAsync(order, items);

            // act
            var result = await Table.UpdateItem(order.GetPrimaryKey())
                         .WithCondition(record => record.Status == OrderStatus.Shipped)
                         .Set(record => record.Status, OrderStatus.Delivered)
                         .ExecuteAsync();

            // assert
            result.Should().BeFalse();
        }
        public async Task BatchGetItemsMixedPartial()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            var(order, items) = NewOrder(customer.Username);
            await DataAccessClient.SaveOrderAsync(order, items);

            // act
            var result = await Table.BatchGetItems()
                         .BeginGetItem(customer.GetPrimaryKey())
                         .Get(record => record.Username)
                         .End()
                         .BeginGetItem(order.GetPrimaryKey())
                         .Get(record => record.OrderId)
                         .End()
                         .ExecuteAsync();

            // assert
            result.Should().HaveCount(2);

            // verify fetched customer record
            var customerRecords = result.OfType <CustomerRecord>().ToList();

            customerRecords.Should().HaveCount(1);
            var fetchedCustomer = customerRecords.First();

            fetchedCustomer.Should().NotBeNull();
            fetchedCustomer.Username.Should().Be(customer.Username);
            fetchedCustomer.Name.Should().BeNull();

            // verify fetched customer record
            var orderRecords = result.OfType <OrderRecord>().ToList();

            orderRecords.Should().HaveCount(1);
            var fetchedOrder = orderRecords.First();

            fetchedOrder.Should().NotBeNull();
            fetchedOrder.OrderId.Should().Be(order.OrderId);
            fetchedOrder.CustomerUsername.Should().BeNull();
        }
        public async Task BatchGetItems()
        {
            // arrange
            var customer1 = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer1);

            var customer2 = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer2);

            // act
            var result = await Table.BatchGetItems(new[] {
                customer1.GetPrimaryKey(),
                customer2.GetPrimaryKey()
            }).ExecuteAsync();

            // assert
            result.Should().HaveCount(2);
            result.Should().ContainEquivalentOf(customer1);
            result.Should().ContainEquivalentOf(customer2);
        }
        public async Task BatchGetItemsMixed()
        {
            // arrange
            var customer = NewCustomer();
            await DataAccessClient.CreateCustomerAsync(customer);

            var(order, items) = NewOrder(customer.Username);
            await DataAccessClient.SaveOrderAsync(order, items);

            // act
            var result = await Table.BatchGetItems()
                         .GetItem(customer.GetPrimaryKey())
                         .GetItem(order.GetPrimaryKey())
                         .ExecuteAsync();

            // assert
            result.Should().HaveCount(2);
            result.Should().ContainEquivalentOf(customer);
            result.Should().ContainEquivalentOf(order);
        }
Пример #13
0
        public async Task Add_order()
        {
            // arrange
            var customer = NewCustomer();

            var(order, items) = NewOrder(customer.Username);

            // act
            await DataAccessClient.CreateCustomerAsync(customer);

            await DataAccessClient.SaveOrderAsync(order, items);

            var result = await DataAccessClient.GetCustomerWithMostRecentOrdersAsync(customer.Username, limit : 10);

            // assert
            result.Customer.Username.Should().Be(customer.Username);
            result.Customer.Name.Should().Be(customer.Name);
            result.Customer.EmailAddress.Should().Be(customer.EmailAddress);
            result.Orders.Count().Should().Be(1);
            result.Orders.First().Should().BeEquivalentTo(order);
        }
Пример #14
0
 //--- Methods ---
 public override async Task InitializeAsync(LambdaConfig config)
 {
     _dataClient          = new DataAccessClient(config.ReadDynamoDBTableName("GameTable"));
     _gameLoopFunctionArn = config.ReadText("GameLoopFunction");
 }
Пример #15
0
 //--- Methods ---
 public override async Task InitializeAsync(LambdaConfig config)
 {
     _dataClient = new DataAccessClient(config.ReadDynamoDBTableName("GameTable"));
 }
Пример #16
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="isRequiredTransaction">是否开启事务判断</param>
        public DaoTransactionScope(bool isRequiredTransaction)
        {
            //构建事务标记
            if (CurrentFlag == null || CurrentFlag == "")
                CurrentFlag = new Random().Next(DateTime.Now.Millisecond).ToString();

            //构建事务信息
            if ((_daoTransactionScopeList == null) || (_daoTransactionScopeList.Count == 0))
            {
                if (_daoTransactionScopeList == null)
                {
                    _daoTransactionScopeList = new List<DaoTransactionScope>();
                }
                _isTransacting = isRequiredTransaction;
                _daoTransactionScopeList.Add(this);
                _current = this;
                if (isRequiredTransaction)
                {
                    _transactionOwner = this;
                }
                else
                {
                    _transactionOwner = null;
                }
                _dataAccessInstance = null;
            }
            else
            {
                //if (_current == null)
                //{
                //    throw new NullReferenceException("当前的 DaoTransactionScope 对象(DaoTransactionScope.Current 属性值)已不存在。请在后面调用上一层 DaoTransactionScope 对象的 Complete() or Dispose() 方法。");
                //}
                if (isRequiredTransaction && !_isTransacting)
                {
                    _isTransacting = isRequiredTransaction;
                }
                _daoTransactionScopeList.Add(this);
                _current = this;
                if ((_transactionOwner == null) && isRequiredTransaction)
                {
                    _transactionOwner = this;
                }
            }
        }
Пример #17
0
        /// <summary>
        /// 数据回收操作
        /// </summary>
        public void Dispose()
        {
            if (!this._isDisposed && _daoTransactionScopeList.Count > 0)
            {
                if (!this._isComplete)
                {
                    this._isUnComplete = true;
                }

                string currentFlag = "";
                for (int i = 0; i < _daoTransactionScopeList.Count; i++)
                {
                    //if (DaoTransactionScopeList[i] == this)
                    //{
                    if (currentFlag == "")
                        currentFlag = DaoTransactionScopeList[i].CurrentFlag;

                    _dataAccessInstance = _daoTransactionScopeList[i].DataAccessInstance;
                    if (_dataAccessInstance != null && !_dataAccessInstance.Disposed && DaoTransactionScopeList[i].CurrentFlag == currentFlag)
                    {
                        if ((_dataAccessInstance.State != ConnectionState.Closed) && _dataAccessInstance.IsTransaction)
                        {
                            try
                            {
                                _dataAccessInstance.RollbackTransaction();
                                //清理失败的SQL语句
                                _dataAccessInstance.lastSql = null;
                            }
                            catch (Exception exception3)
                            {
                                //清理失败的SQL语句
                                _dataAccessInstance.lastSql = null;
                            }
                            finally
                            {
                                try
                                {
                                    _dataAccessInstance.Dispose();
                                    _dataAccessInstance = null;
                                }
                                catch { }
                            }
                        }


                    }
                    _daoTransactionScopeList[i].IsTransacting = false;
                }
                if (this == _transactionOwner)
                {
                    _transactionOwner = null;
                }
                for (int i = _daoTransactionScopeList.Count - 1; i >= 0; i--)
                {
                    if (_daoTransactionScopeList[i].IsTransacting == false)
                        _daoTransactionScopeList.Remove(DaoTransactionScopeList[i]);
                }

                if (_daoTransactionScopeList.Count > 0)
                {
                    _current = _daoTransactionScopeList[_daoTransactionScopeList.Count - 1];
                }
                else
                {
                    _current = null;
                }
                this._isDisposed = true;
            }
        }
Пример #18
0
        /// <summary>
        /// 实现数据提交信息
        /// </summary>
        public void Complete()
        {
            if (this.Disposed)
            {
                throw new ObjectDisposedException("DaoTransactionScope");
            }
            if (_current == null)
            {
                throw new NullReferenceException("当前的 DaoTransactionScope 对象(DaoTransactionScope.Current 属性值)已不存在。请不要重复调用 Complete() 方法。");
            }


            string currentFlag = "";
            for (int i = 0; i < DaoTransactionScopeList.Count; i++)
            {
                if (currentFlag == "")
                    currentFlag = DaoTransactionScopeList[i].CurrentFlag;

                if (DaoTransactionScopeList[i].IsTransacting && DaoTransactionScopeList[i].CurrentFlag == currentFlag)
                {
                    _dataAccessInstance = DaoTransactionScopeList[i].DataAccessInstance;
                    if ((_dataAccessInstance != null) && _dataAccessInstance.IsTransaction)
                    {
                        _dataAccessInstance.CommitTransaction();
                    }
                    //DaoTransactionScopeList.Remove(DaoTransactionScopeList[i]);
                    DaoTransactionScopeList[i].IsTransacting = false;
                    try
                    {
                        _dataAccessInstance.Dispose();
                        _dataAccessInstance = null;
                    }
                    catch { }
                    _transactionOwner = null;
                }
            }

            for (int i = DaoTransactionScopeList.Count - 1; i >= 0; i--)
            {
                if (DaoTransactionScopeList[i].IsTransacting == false)
                    DaoTransactionScopeList.Remove(DaoTransactionScopeList[i]);
            }

            this._isComplete = true;
            _current = null;
        }