private string BuildVariableCommandText(T modelEntity)
        {
            StringBuilder stringBuilder = new StringBuilder(WHITE_SPACE + "SET" + WHITE_SPACE);
            Type          entityType    = modelEntity.GetType();

            PropertyInfo[] propertiesInfo = entityType.GetProperties();


            for (int i = 0; i < propertiesInfo.Length - 1; ++i)
            {
                stringBuilder.Append(propertiesInfo[i].Name + EQUALS + AttributeValueHelper.IfStringDoQuotaiton(propertiesInfo[i].GetValue(modelEntity)) + WHITE_SPACE + COMMA);
            }
            stringBuilder.Append(propertiesInfo.Last().Name + EQUALS + AttributeValueHelper.IfStringDoQuotaiton(propertiesInfo.Last().GetValue(modelEntity)) + WHITE_SPACE);
            string whereExpression = DbCommand <T> .BuildWhereExpression(modelEntity, modelEntity.GetPrimaryKeyPropertyNames(), false);

            return(stringBuilder.Append(whereExpression).ToString());
        }
        private string BuildVariableCommandText(string tableName, T modelEntity)
        {
            StringBuilder stringBuilderColumnNames        = new StringBuilder(WHITE_SPACE + OPENNING_BRACKET + WHITE_SPACE);
            StringBuilder stringBuilderCorespondingValues = new StringBuilder(WHITE_SPACE + OPENNING_BRACKET + WHITE_SPACE);
            Type          entityType = modelEntity.GetType();

            PropertyInfo[] propertiesInfo = entityType.GetProperties();
            propertiesInfo = propertiesInfo.Where(x => x.Name.CompareTo(modelEntity.GetPrimaryKeyPropertyNames().First()) != 0).ToArray();
            for (int i = 0; i < propertiesInfo.Length - 1; ++i)
            {
                stringBuilderColumnNames.Append(propertiesInfo[i].Name + COMMA);
                stringBuilderCorespondingValues.Append(AttributeValueHelper.IfStringDoQuotaiton(propertiesInfo[i].GetValue(modelEntity)) + COMMA);
            }
            stringBuilderColumnNames.Append(propertiesInfo.Last().Name + CLOSING_BRACKET);
            stringBuilderCorespondingValues.Append(AttributeValueHelper.IfStringDoQuotaiton(propertiesInfo.Last().GetValue(modelEntity)) + CLOSING_BRACKET);
            stringBuilderColumnNames.Append(" VALUES " + stringBuilderCorespondingValues.ToString());
            return(stringBuilderColumnNames.ToString());
        }
        protected static string BuildWhereExpression(T entity, string[] attributesName, bool?deleted)
        {
            StringBuilder stringBuilder  = new StringBuilder(" WHERE ");
            Type          entityType     = entity.GetType();
            string        lastPrimaryKey = attributesName.Last();

            attributesName = attributesName.TakeWhile(x => x != lastPrimaryKey).ToArray();
            foreach (string key in attributesName)
            {
                stringBuilder.Append(WHITE_SPACE + key + EQUALS_SIGN + AttributeValueHelper.IfStringDoQuotaiton(entityType.GetProperty(key).GetValue(entity)) + " AND");
            }
            stringBuilder.Append(WHITE_SPACE + lastPrimaryKey + EQUALS_SIGN + AttributeValueHelper.IfStringDoQuotaiton(entityType.GetProperty(lastPrimaryKey).GetValue(entity)));
            if (deleted != null)
            {
                stringBuilder.Append(" AND Deleted = " + Convert.ToInt32(deleted));
            }
            return(stringBuilder.ToString());
        }