Example #1
0
        /// <summary>
        /// 使用一段sql,进行分页查询, 目前只支持sqlserver
        /// </summary>
        /// <param name="sqlText"></param>
        /// <param name="orderbyClause"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
        public DataTable Query(string sqlText, string orderbyClause, int pageIndex, int pageSize, ref int recordCount)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(sqlText, "sql");
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(orderbyClause, "orderbyClause");

            if (pageSize > 0 && pageIndex >= 0)
            {
                if (recordCount <= 0)
                {
                    CmdTextBeeCommand countBeeCommand = new CmdTextBeeCommand(this, "select count(1) as beecount from ( {0} )t".FormatWith(sqlText), null);

                    DataTable countTable = countBeeCommand.Excute <DataTable>();
                    if (countTable != null && countTable.Rows.Count == 1)
                    {
                        int.TryParse(countTable.Rows[0]["beecount"].ToString(), out recordCount);
                    }
                }
            }

            string sql = this.dbDriver.GetPagedSelectCmdText(sqlText, orderbyClause, pageIndex, pageSize);

            CmdTextBeeCommand queryBeeCommand = new CmdTextBeeCommand(this, sql, null);

            return(queryBeeCommand.Excute <DataTable>());
        }
Example #2
0
        public void SendMessage(string openId, string content)
        {
            content = HttpUtility.HtmlDecode(content);
            bool result = WeiXinManager.Instance.SendMessage(openId, content);

            ThrowExceptionUtil.ArgumentConditionTrue(result, "", "发送失败!");
        }
Example #3
0
        /// <summary>
        /// 保存数据。
        /// 默认的表名就是类名, 若T类型上有指定的表名,则以此为准
        /// 默认的自增列为Id,若T类型上有指定的自增列, 则以此为准。
        /// 若value中的标识列大于0, 则修改。 若小于等于0, 则新增。
        /// 注:主键为int
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="value">类型值</param>
        /// <returns>新增则返回自增列, 修改则返回本身标示列值。</returns>
        public int Save <T>(T value) where T : class
        {
            ThrowExceptionUtil.ArgumentNotNull(value, "value");

            string identityColumnName = OrmUtil.GetIdentityColumnName <T>();

            string tableName = OrmUtil.GetTableName <T>();

            EntityProxy <T> entityProxy = EntityProxyManager.Instance.GetEntityProxy <T>();

            object identity = entityProxy.GetPropertyValue(value, identityColumnName);

            ThrowExceptionUtil.ArgumentConditionTrue(identity != null, string.Empty, "未指定主键列");

            if ((int)identity <= 0)
            {
                return(Insert <T>(value));
            }
            else
            {
                BeeDataAdapter dataAdapter = BeeDataAdapter.From <T>(value);
                dataAdapter.RemoveKey(identityColumnName);

                Update(tableName, dataAdapter, SqlCriteria.New.Equal(identityColumnName, identity));

                return((int)identity);
            }
        }
Example #4
0
        private T ExecuteDataReader <T>(DbDataReader dataReader)
            where T : class
        {
            var len = dataReader.FieldCount;

            EntityProxy <T> entityProxy = EntityProxyManager.Instance.GetEntityProxy <T>();

            T result = entityProxy.CreateInstance() as T;

            for (var i = 0; i < len; i++)
            {
                string name     = dataReader.GetName(i);
                var    rawValue = dataReader.GetValue(i);

                try
                {
                    entityProxy.SetPropertyValue(result, name, rawValue);
                }
                catch (Exception)
                {
                    ThrowExceptionUtil.ThrowMessageException("setpropertyerror.name:{0} value:{1}".FormatWith(name, rawValue));
                }
            }

            return(result);
        }
Example #5
0
        public T InsertT <T>(string tableName, BeeDataAdapter dataAdapter, bool removeIdentity)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName");
            ThrowExceptionUtil.ArgumentNotNull(dataAdapter, "dataAdapter");

            if (removeIdentity)
            {
                TableSchema tableSchema = GetTableSchema(tableName);
                ThrowExceptionUtil.ArgumentConditionTrue(tableSchema != null, "tableName", "can not find table. Name:{0}".FormatWith(tableName));
                if (tableSchema.IdentityColumn != null)
                {
                    dataAdapter.RemoveKey(tableSchema.IdentityColumn.ColumnName);
                }
                else
                {
                    dataAdapter.RemoveKey(Constants.DefaultIdentityColumnName);
                }
            }

            T result = default(T);
            InsertBeeCommand insertBeeCommand =
                new InsertBeeCommand(this, tableName, dataAdapter, Constants.DefaultIdentityColumnName);

            result = insertBeeCommand.Excute <T>();

            return(result);
        }
Example #6
0
        private void Init(bool forceFlag)
        {
            if (string.IsNullOrEmpty(mpToken) || forceFlag)
            {
                string weiXinUserName = ConfigUtil.GetAppSettingValue <string>("WeiXinUserName");
                string weiXinPassword = ConfigUtil.GetAppSettingValue <string>("WeiXinPassword");

                string password = SecurityUtil.MD5EncryptS(weiXinPassword).ToUpper();

                Dictionary <string, string> postData = httpClient.PostingData;

                postData.Add("username", weiXinUserName);
                postData.Add("pwd", password);
                postData.Add("f", "json");

                httpClient.Url             = "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN";
                httpClient.Context.Referer = "https://mp.weixin.qq.com/";

                string response = httpClient.GetString();

                Match match = mpTokenRegex.Match(response);

                ThrowExceptionUtil.ArgumentConditionTrue(match.Success, "", "模拟登入微信公众平台失败!");

                if (match.Success)
                {
                    mpToken = match.Groups["token"].Value;
                }
            }
        }
Example #7
0
        protected override void BuildCommand()
        {
            base.dbCommand.CommandText = this.spName;
            base.dbCommand.CommandType = CommandType.StoredProcedure;

            SPSchema schema = CacheManager.Instance.GetEntity <SPSchema, string>(owner.ConnectionName,
                                                                                 spName, TimeSpan.MaxValue,
                                                                                 (name) =>
            {
                return(owner.DbDriver.GetSpSchema(name));
            });

            ThrowExceptionUtil.ArgumentConditionTrue(schema != null, "tableName", "Can not find sp. Name:{0}".FormatWith(spName));

            DataAdapterParser dataAdapterParser = new DataAdapterParser(owner, dataAdapter);

            if (dataAdapter != null)
            {
                foreach (SPParameter spParameter in schema.ParameterList)
                {
                    DbParameter parameter = owner.DbDriver.CreateParameter();
                    parameter.ParameterName = spParameter.Name;
                    parameter.Direction     = spParameter.Direction;
                    //parameter.DbType = spParameter.DbType;
                    if (spParameter.DbType == "REF CURSOR")
                    {
                        IEntityProxy parameterProxy = EntityProxyManager.Instance.GetEntityProxyFromType(parameter.GetType());
                        if (parameter.GetType().Namespace == "System.Data.OracleClient")
                        {
                            parameterProxy.SetPropertyValue(parameter, "OracleType", 5);
                            //parameter.DbType = (DbType)5;
                        }
                        else
                        {
                            parameterProxy.SetPropertyValue(parameter, "OracleDbType", 0x79);
                        }
                    }

                    if (dataAdapter[spParameter.Name] != null)
                    {
                        parameter.Value = dataAdapter[spParameter.Name];
                    }
                    else
                    {
                        if (owner.DbDriver.DbTypeMap.ContainsKey(spParameter.DbType))
                        {
                            Type type = owner.DbDriver.DbTypeMap[spParameter.DbType];
                            parameter.Value = GetDefaultValue(type);

                            if (spParameter.Direction == ParameterDirection.InputOutput && spParameter.MaxLength > 0)
                            {
                                parameter.Size = spParameter.MaxLength * 2;
                            }
                        }
                    }

                    base.dbCommand.Parameters.Add(parameter);
                }
            }
        }
Example #8
0
        /// <summary>
        /// 返回数据对应表所对应key的值。
        /// </summary>
        /// <param name="mappingName">数据对应表名</param>
        /// <param name="keyValue">对应表值, 可以多个值, 以,分割</param>
        /// <param name="valuePropertyName"></param>
        /// <returns></returns>
        public string Mapping(string mappingName, string keyValue, string keyPropertyName, string valuePropertyName)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(mappingName, "mappingName");

            List <string> list   = new List <string>();
            string        result = string.Empty;

            object cacheValue = GetCachedMappingValue(mappingName);

            if (cacheValue != null && !string.IsNullOrEmpty(keyValue))
            {
                string[]  array      = keyValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                DataTable tableValue = cacheValue as DataTable;
                if (tableValue != null)
                {
                    foreach (string itemValue in array)
                    {
                        result = GetDataTableValue(tableValue, itemValue, keyPropertyName, valuePropertyName);

                        list.Add(result);
                    }
                }
            }

            return(string.Join(",", list.ToArray()));
        }
        public IEntityProxy GetEntityProxyFromType(Type type)
        {
            ThrowExceptionUtil.ArgumentNotNull(type, "type");

            ThrowExceptionUtil.ArgumentConditionTrue(
                !type.IsValueType && Type.GetTypeCode(type) == TypeCode.Object,
                "type", "the type should be class. not support {0}".FormatWith(type));

            IEntityProxy result = null;

            try
            {
                lock (lockobject)
                {
                    if (!entityProxyTable.ContainsKey(type))
                    {
                        PrepareForType(type);
                    }

                    //Logger.Debug(string.Format("threadid:{0}", Thread.CurrentThread.ManagedThreadId));

                    result = entityProxyTable[type] as IEntityProxy;
                }
            }
            catch (Exception e)
            {
                throw new ArgumentException("Create Proxy Error. Type:{0}".FormatWith(type), e);
            }

            return(result);
        }
Example #10
0
        public override T Excute <T>()
        {
            ThrowExceptionUtil.ArgumentConditionTrue(owner.DbDriver is SqlServer2000Driver, string.Empty, "only sqlserver can use bulkcopy.");

            SqlConnection connection  = owner.OpenConnection() as SqlConnection;
            SqlBulkCopy   sqlBulkCopy = new SqlBulkCopy(connection);

            sqlBulkCopy.BulkCopyTimeout = 50000;
            sqlBulkCopy.BatchSize       = 1000;
            if (notifyHandler != null)
            {
                sqlBulkCopy.SqlRowsCopied += notifyHandler;
                sqlBulkCopy.NotifyAfter    = notifyAfter;
            }
            if (mapping != null)
            {
                foreach (string key in mapping.Keys)
                {
                    sqlBulkCopy.ColumnMappings.Add(key, mapping[key]);
                }
            }

            sqlBulkCopy.DestinationTableName = tableName;
            sqlBulkCopy.WriteToServer(data);

            return(default(T));
        }
Example #11
0
        private DbDriver GetDbDriver(string connectionName,
                                     string providerName, string connectionString)
        {
            DbDriver driver     = null;
            string   driverName = string.Empty;

            DataRow[] rows = providerTable.Select(string.Format("invariantname='{0}'", providerName));

            DbProviderFactory dbProviderFactory = null;

            if (rows != null && rows.Length > 0)
            {
                dbProviderFactory = DbProviderFactories.GetFactory(rows[0]);
            }
            else
            {
                if (string.Compare(providerName, "System.Data.SQLite", true) == 0)
                {
                    dbProviderFactory = ReflectionUtil.CreateInstance("System.Data.SQLite.SQLiteFactory, System.Data.SQLite") as DbProviderFactory;
                }
                else if (string.Compare(providerName, "Npgsql", true) == 0)
                {
                    dbProviderFactory = ReflectionUtil.CreateInstance("Npgsql.NpgsqlFactory, Npgsql") as DbProviderFactory;
                }
            }

            ThrowExceptionUtil.ArgumentConditionTrue(dbProviderFactory != null, "connectionKey",
                                                     "the providerName of the connection setting '{0}' error, please check it.".FormatWith(connectionName));

            string[] keyArray = connectionName.Split("#".ToCharArray());
            if (keyArray.Length == 2)
            {
                string key = keyArray[0];
                driverName = keyArray[1];

                driver = ReflectionUtil.CreateInstance(driverNameDict[string.Format(DriverClassNameTemplate, driverName)],
                                                       dbProviderFactory, connectionString, connectionName) as DbDriver;
            }

            if (driver == null)
            {
                foreach (string key in ruleDict.Keys)
                {
                    if (providerName.IndexOf(key, StringComparison.CurrentCultureIgnoreCase) >= 0)
                    {
                        driverName = ruleDict[key];
                        break;
                    }
                }

                driver = ReflectionUtil.CreateInstance(driverNameDict[string.Format(DriverClassNameTemplate, driverName)],
                                                       dbProviderFactory, connectionString, connectionName) as DbDriver;
            }

            ThrowExceptionUtil.ArgumentConditionTrue(driver != null, "connectionName",
                                                     "the connection setting '{0}' error, please check it.".FormatWith(connectionName));

            return(driver);
        }
Example #12
0
        /// <summary>
        /// 调用存储过程。
        /// 一般不推荐返回值, 直接将该信息反映在结果集中更好。
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <param name="dataAdapter">数据集</param>
        /// <returns>返回结果集</returns>
        public DataTable CallSP(string spName, BeeDataAdapter dataAdapter)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(spName, "spName");

            SPBeeCommand spBeeCommand = new SPBeeCommand(this, spName, dataAdapter);

            return(spBeeCommand.Excute <DataTable>());
        }
Example #13
0
        public DataTable ExecuteCommandWhere(string cmdTextWithWhere, SqlCriteria sqlCriteria)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(cmdTextWithWhere, "cmdTextWithWhere");

            CmdTextWithWhereBeeCommand cmdTextBeeCommand = new CmdTextWithWhereBeeCommand(this, cmdTextWithWhere, sqlCriteria);

            return(cmdTextBeeCommand.Excute <DataTable>());
        }
Example #14
0
        /// <summary>
        /// sql文查询
        /// </summary>
        /// <param name="cmdText">sql文</param>
        /// <param name="dataAdapter">数据集</param>
        /// <returns>结果集</returns>
        public DataTable ExecuteCommand(string cmdText, BeeDataAdapter dataAdapter)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(cmdText, "cmdText");

            CmdTextBeeCommand cmdTextBeeCommand = new CmdTextBeeCommand(this, cmdText, dataAdapter);

            return(cmdTextBeeCommand.Excute <DataTable>());
        }
Example #15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="dataTable"></param>
        /// <param name="mapping"></param>
        /// <param name="notifyHandler"></param>
        /// <param name="notifyAfter"></param>
        public void SqlBulkCopy(string tableName, DataTable dataTable, Dictionary <string, string> mapping, SqlRowsCopiedEventHandler notifyHandler, int notifyAfter)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName");
            ThrowExceptionUtil.ArgumentConditionTrue(dataTable != null && dataTable.Rows.Count > 0, "dataTable", "data can not be null or empty");

            SqlServerBulkCopyCommand command = new SqlServerBulkCopyCommand(this, tableName, dataTable, mapping, notifyHandler, notifyAfter);

            command.Excute <int>();
        }
Example #16
0
        public IEnumerable <T> ExecuteDataReader <T>(string cmdText, BeeDataAdapter dataAdapter)
            where T : class
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(cmdText, "cmdText");

            CmdTextBeeCommand cmdTextBeeCommand = new CmdTextBeeCommand(this, cmdText, dataAdapter);

            return(cmdTextBeeCommand.DataRead <T>());
        }
Example #17
0
        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="sqlCriteria">条件集</param>
        public void Delete(string tableName, SqlCriteria sqlCriteria)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName");

            DeleteBeeCommand deleteBeeCommand =
                new DeleteBeeCommand(this, tableName, sqlCriteria);

            deleteBeeCommand.Excute <int>();
        }
Example #18
0
        // Methods
        public UpdateBeeCommand(DbSession owner, string tableName, BeeDataAdapter data, SqlCriteria sqlCriteria)
            : base(owner, BeeDbCommandBehavior.NoQuery)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName");
            ThrowExceptionUtil.ArgumentConditionTrue(data != null && data.Count != 0, "data", "data should not be null or empty.");

            this.tableName   = tableName;
            this.dataAdapter = data;
            this.sqlCriteria = sqlCriteria;
        }
Example #19
0
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="dataAdapter">数据集</param>
        /// <param name="sqlCriteria">条件集</param>
        public void Update(string tableName, BeeDataAdapter dataAdapter, SqlCriteria sqlCriteria)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName");
            ThrowExceptionUtil.ArgumentNotNull(dataAdapter, "dataAdapter");

            UpdateBeeCommand updateBeeCommand =
                new UpdateBeeCommand(this, tableName, dataAdapter, sqlCriteria);

            updateBeeCommand.Excute <int>();
        }
Example #20
0
        protected override void BuildCommand()
        {
            string whereClause        = string.Empty;
            string orderbyClauseValue = string.Empty;

            if (sqlCriteria != null)
            {
                this.sqlCriteria.Owner = owner;
                whereClause            = string.Format("{0}", sqlCriteria.WhereClause);

                base.dbCommand.Parameters.AddRange(sqlCriteria.DbParameters.ToArray());


                TableSchema tableSchema = owner.GetTableSchema(tableName);
            }
            else
            {
                whereClause = "1=1";
            }

            if (!string.IsNullOrEmpty(orderbyClause))
            {
                ThrowExceptionUtil.ArgumentConditionTrue(
                    !Regex.IsMatch(orderbyClause, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|\*|!|\']")
                    , string.Empty, "orderbyClause contains invalid code");

                orderbyClauseValue = string.Format("order by {0}", orderbyClause);
            }

            // 分页的三个条件, 起始页, 页大小, 排序规则
            if (pageSize > 0 && pageIndex >= 0)
            {
                if (string.IsNullOrEmpty(orderbyClause))
                {
                    orderbyClauseValue = string.Format("order by {0}", Constants.DefaultIdentityColumnName);
                }

                if (tableName.IndexOf(" join ") < 0)
                {
                    tableName = owner.DbDriver.FormatField(tableName);
                }

                base.dbCommand.CommandText = owner.DbDriver.GetPagedSelectCmdText(selectClause, tableName,
                                                                                  whereClause, orderbyClauseValue, pageIndex, pageSize);
            }
            else
            {
                base.dbCommand.CommandText = string.Format(
                    @"select {0} 
from {1} 
where {2}
{3}", selectClause, owner.DbDriver.FormatField(tableName), whereClause, orderbyClauseValue);
            }
        }
Example #21
0
        /// <summary>
        /// 注册数据源
        /// </summary>
        /// <param name="connectionName">连接字符串名</param>
        /// <param name="providerName">数据源名</param>
        /// <param name="connectionString">连接字符串</param>
        public static void Register(string connectionName,
                                    string providerName, string connectionString)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(connectionName, "connectionName");
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(providerName, "providerName");
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(connectionString, "connectionString");

            DbDriverFactory.Instance.RegisterDbDriver(connectionName, providerName, connectionString);

            InitDefaultDbSession();
        }
Example #22
0
        /// <summary>
        /// 查询数据
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="selectClause">需要查询的字段集</param>
        /// <param name="sqlCriteria">条件集</param>
        /// <param name="orderbyClause">排序集</param>
        /// <param name="pageIndex">起始页</param>
        /// <param name="pageSize">页大小</param>
        /// <param name="recordCount">结果集大小</param>
        /// <returns>结果集</returns>
        public DataTable Query(string tableName, string selectClause,
                               SqlCriteria sqlCriteria, string orderbyClause, int pageIndex, int pageSize, ref int recordCount)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName");

            DataTable cacheData = CacheManager.Instance.GetEntity <DataTable>(Constants.DBTableCacheName.FormatWith(tableName));

            // 需要被缓存
            if (cacheData != null)
            {
                if (cacheData.Rows.Count == 0)
                {
                    QueryBeeCommand queryBeeCommand = new QueryBeeCommand(this, tableName, "*",
                                                                          null, orderbyClause, -1, -1);

                    cacheData = queryBeeCommand.Excute <DataTable>();
                    CacheManager.Instance.AddEntity <DataTable>(Constants.DBTableCacheName.FormatWith(tableName), cacheData, TimeSpan.MaxValue);
                }

                DataTable result = DataUtil.Query(cacheData, sqlCriteria, orderbyClause,
                                                  pageIndex, pageSize, ref recordCount);

                return(result);
            }
            else
            {
                QueryBeeCommand queryBeeCommand = new QueryBeeCommand(this, tableName, selectClause,
                                                                      sqlCriteria, orderbyClause, pageIndex, pageSize);

                DataTable result = queryBeeCommand.Excute <DataTable>();

                if (pageSize > 0 && pageIndex >= 0)
                {
                    if (recordCount <= 0)
                    {
                        QueryBeeCommand countBeeCommand = new QueryBeeCommand(this, tableName,
                                                                              "count(*) as beecount", sqlCriteria, null, -1, -1);
                        DataTable countTable = countBeeCommand.Excute <DataTable>();
                        if (countTable != null && countTable.Rows.Count == 1)
                        {
                            int.TryParse(countTable.Rows[0]["beecount"].ToString(), out recordCount);
                        }
                    }
                }
                else
                {
                    recordCount = result.Rows.Count;
                }

                return(result);
            }
        }
Example #23
0
    public static void Main(string[] args)
    {
        /*
         * TODO
         * commonのThrowExceptionUtilクラスのメソッドを呼び出した後、
         * 後続の処理も行うように修正してください。
         * ThrowExceptionUtilクラスは変更せずに下の処理を修正することで完成してください。
         */
        // ※メソッドが呼び出されました。例外が発生し、後続の処理を行いました。 と表示されれば正解

        ThrowExceptionUtil.ExceptioinMethod();
        Console.WriteLine("後続の処理を行いました。");
    }
Example #24
0
        public SqlCriteria Or(SqlCriteria sqlCriteria)
        {
            ThrowExceptionUtil.ArgumentNotNull(sqlCriteria, "sqlCriteria");
            blurFlag = true;
            if (sqlCriteria.innerList.Count != 0 || sqlCriteria.root.Count != 0)
            {
                root.Add(sqlCriteria.guid, sqlCriteria);

                expression = string.Format("({0} or {1})", expression, sqlCriteria.guid);
            }

            return(this);
        }
Example #25
0
        protected override DbDriver CreateInstance(string connectionName)
        {
            DbDriver driver     = null;
            string   driverName = string.Empty;

            ConnectionStringSettings setting = ConfigUtil.InnerGetConnectionString(connectionName);

            ThrowExceptionUtil.ArgumentConditionTrue(setting != null, "connectionKey",
                                                     "there is no connectionKey named '{0}'".FormatWith(connectionName));

            driver = GetDbDriver(connectionName, setting.ProviderName, setting.ConnectionString);

            return(driver);
        }
        public T Take()
        {
            lock (lockObject)
            {
                T result = default(T);

                ThrowExceptionUtil.ArgumentConditionTrue(innerQueue.Count > 0, string.Empty, "there is no item in queue");

                queueSizeLatch.CountDown();

                result = innerQueue.Dequeue();

                return(result);
            }
        }
Example #27
0
        public Criterion(string name, object value, CriterionType type, CriterionModel model)
        {
            ThrowExceptionUtil.ArgumentNotNullOrEmpty("name", name);

            // 若是Enum, 转换成数字匹配
            if (value is Enum)
            {
                value = (int)value;
            }

            this.leftExpression = name;
            this.value          = value;
            this.criterionType  = type;
            this.criterionModel = model;
        }
        public PropertySchema this[string propertyName]
        {
            get
            {
                ThrowExceptionUtil.ArgumentNotNullOrEmpty(propertyName, "propertyName");
                foreach (PropertySchema item in GetPropertyList())
                {
                    if (string.Compare(item.Name, propertyName, true) == 0)
                    {
                        return(item);
                    }
                }

                return(null);
            }
        }
Example #29
0
        public bool SendMessage(string openId, string content)
        {
            bool result = false;

            Init(false);

            Dictionary <string, string> postData = httpClient.PostingData;

            postData.Add("tofakeid", openId);
            postData.Add("token", MPToken);
            postData.Add("type", "1");
            postData.Add("content", content);
            postData.Add("ajax", "1");


            httpClient.Url             = " https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN ";
            httpClient.Context.Referer =
                "https://mp.weixin.qq.com/cgi-bin/singlesendpage?t=message/send&action=index&tofakeid={0}&token={1}&lang=zh_CN".FormatWith(openId, MPToken);


            string response = httpClient.GetString();

            Match match = wxGeneralResultRegext.Match(response);

            if (match.Success)
            {
                string ret = match.Groups["ret"].Value;
                string msg = match.Groups["msg"].Value;

                if (ret == "0")
                {
                    result = true;
                }
                else
                {
                    Init(true);
                }
            }

            ThrowExceptionUtil.ArgumentConditionTrue(result, "", "发送失败!");

            return(result);
        }
Example #30
0
        /// <summary>
        /// 新增数据。
        /// 默认的表名就是类名, 若T类型上有指定的表名,则以此为准
        /// 默认的自增列为Id,若T类型上有指定的自增列, 则以此为准。
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="value">类型值</param>
        /// <param name="removeIdentity">是否移除标示列,该值若为false, 则Insert语句中将可能包含自增列。</param>
        /// <returns>插入返回的自增列</returns>
        public int Insert <T>(T value, bool removeIdentity) where T : class
        {
            ThrowExceptionUtil.ArgumentNotNull(value, "value");

            Type            typeInfo    = typeof(T);
            EntityProxy <T> entityProxy = EntityProxyManager.Instance.GetEntityProxy <T>();

            string tableName          = OrmUtil.GetTableName <T>();
            string identityColumnName = OrmUtil.GetIdentityColumnName <T>();

            BeeDataAdapter dataAdapter = BeeDataAdapter.From <T>(value);

            int result = Insert(tableName, dataAdapter, removeIdentity);

            if (result != -1)
            {
                entityProxy.SetPropertyValue(value, identityColumnName, result);
            }

            return(result);
        }