//public int TestAssignPrimaryKeys()
        //{
        //    this.AssignPrimaryKeys();
        //    return this.Table.PrimaryKey.Length;
        //}

        //public int TestRemovePrimaryKeys()
        //{
        //    this.RemovePrimaryKeys();
        //    return this.Table.PrimaryKey.Length;
        //}

        public void TestParamsWithScale()
        {
            esParameter myParam = new esParameter("Salary", 12.34);

            myParam.DbType    = DbType.Decimal;
            myParam.Precision = 18;
            myParam.Scale     = 2;
            myParam.Direction = esParameterDirection.InputOutput;

            esParameters parms = new esParameters();

            parms.Add(myParam);
            parms.Add("DepartmentID", 1);
            //parms.Add("DepartmentID", null);
            parms.Add("FirstName", "Entity");
            parms.Add("LastName", "Spaces");
            parms.Add("Age", 100);
            parms.Add("HireDate", "2000-12-31 00:00:00");
            parms.Add("IsActive", false);
            this.ExecuteNonQuery(esQueryType.StoredProcedure, "proc_esTestInsert", parms);
        }
        private void OnMessageReceived(object sender, XDMessageEventArgs e)
        {
            try
            {
                esTracePacket entry = new esTracePacket();

                string[] fields = e.DataGram.Message.Split('±');

                if (fields[0].Length > 0)
                {
                    entry.TransactionId = Convert.ToInt32(fields[0]);
                }

                if (fields[1].Length > 0)
                {
                    entry.ObjectType = fields[1];
                }

                entry.CallStack = fields[2];
                entry.ApplicationName = fields[3];
                entry.TraceChannel = fields[4];
                entry.ThreadId = Convert.ToInt32(fields[5]);
                entry.Sql = fields[6];
                entry.Duration = Convert.ToInt64(fields[7]);
                entry.Ticks = Convert.ToInt64(fields[8]);
                entry.PacketOrder = Convert.ToInt64(fields[9]);
                entry.Action = fields[10];
                entry.Syntax = fields[11];
                entry.Exception = fields[12];

                if (fields[13].Length > 0)
                {
                    // Parse Parameters
                    string[] parameters = fields[13].Split('«');

                    esParameter param = null;
                    for (int i = 0; i < parameters.Length; i += 5)
                    {
                        if (param == null) param = new esParameter();

                        param.Name = parameters[i];
                        param.Direction = parameters[i + 1];
                        param.ParamType = parameters[i + 2];

                        if (parameters[i + 3] != "null")
                        {
                            param.BeforeValue = parameters[i + 3];
                        }

                        if (parameters[i + 4] != "null")
                        {
                            param.AfterValue = parameters[i + 4];
                        }

                        entry.SqlParameters.Add(param);
                        param = null;
                    }
                }

                switch (entry.TraceChannel)
                {
                    case Channels.Channel_1: AddEntryToList(channel_1, entry); break;
                    case Channels.Channel_2: AddEntryToList(channel_2, entry); break;
                    case Channels.Channel_3: AddEntryToList(channel_3, entry); break;
                    case Channels.Channel_4: AddEntryToList(channel_4, entry); break;
                    case Channels.Channel_5: AddEntryToList(channel_5, entry); break;
                    case Channels.Channel_6: AddEntryToList(channel_6, entry); break;
                    case Channels.Channel_7: AddEntryToList(channel_7, entry); break;
                    case Channels.Channel_8: AddEntryToList(channel_8, entry); break;
                    case Channels.Channel_9: AddEntryToList(channel_9, entry); break;
                    case Channels.Channel_10: AddEntryToList(channel_10, entry); break;
                }
            }
            catch { }
        }