Exemplo n.º 1
0
        /// <summary>
        /// 创建DbCommand参数。
        /// </summary>
        /// <param name="dbCommand">DbCommand对象。</param>
        /// <param name="commandParameter">命令参数对象。</param>
        /// <returns>返回ADO.NET命令参数对象。</returns>
        protected virtual System.Data.IDbDataParameter CreateDbCommandParameter(System.Data.IDbCommand dbCommand, CommandParameter commandParameter)
        {
            var result = dbCommand.CreateParameter();

            if (commandParameter.IsReturn)
            {
                result.Direction = ParameterDirection.ReturnValue;
            }
            else
            {
                result.ParameterName = commandParameter.Name;
                if (commandParameter.IsOut)
                {
                    result.Direction = ParameterDirection.Output;
                }
                if (commandParameter.Value == null)
                {
                    result.Value = System.DBNull.Value;
                    goto lb_Properties;
                }
                if (commandParameter.RealType.IsArray && commandParameter.RealType.GetElementType() == typeof(byte))
                {
                    result.DbType = DbType.Binary;
                    result.Value  = commandParameter.Value;
                    goto lb_Properties;
                }
                result.Value = commandParameter.Value;
            }
lb_Properties:
            foreach (System.Collections.Generic.KeyValuePair <string, object> p in commandParameter.Properties)
            {
                FastWrapper.Set(result, p.Key, p.Value);
            }
            return(result);
        }
Exemplo n.º 2
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            //Symbol.Forms.SelectedItem<Funds> fundsItem = (Symbol.Forms.SelectedItem<Funds>)cbFundsId.SelectedItem;
            Symbol.Forms.SelectedItem <ConsumeType> consumeTypeItem = (Symbol.Forms.SelectedItem <ConsumeType>)cbConsumeTypeId.SelectedItem;
            if (!UIValidtion.Create()
                .Next(cbConsumeTypeId, p => p.SelectedIndex != -1, p => consumeTypeItem == null ? "" : consumeTypeItem.Text, "消费方式", true)
                .Next(dtByDate, p => p.Value.HasValue, p => p.Value == null ? "" : p.Value.Value.ToString(p.Format), "日期")
                .Null(txtMoney, "金额")
                .NumDec(0)
                .Null(txtRelatedPerson, "相关人")
                .Len(1, 10)
                .Result)
            {
                return;
            }

            _model = new FundsLog()
            {
                UserId    = Program.CurrentUser.Id,
                ByDate    = dtByDate.Value.Value,
                ByDateDay = dtByDate.DayNumber,
                //FundsId = fundsItem.Value.Id,
                ConsumeTypeId = consumeTypeItem.Value.Id,
                Money         = Math.Abs(TypeExtensions.Convert <decimal>(txtMoney.Text, 0M)),
                //LastMoney= fundsItem.Value.Money,
                RelatedPerson = txtRelatedPerson.Text,
                Comment       = txtComment.Text,
                IsOut         = consumeTypeItem.Value.IsOut,
            };
            Program.DataStore.Add(_model);
            //Symbol.FastWrapper.Set(_model, "FundsName", fundsItem.Value.Name);
            FastWrapper.Set(_model, "ConsumeTypeName", consumeTypeItem.Value.Name);

            DialogResult = System.Windows.Forms.DialogResult.OK;
        }
Exemplo n.º 3
0
 /// <summary>
 /// 设置构造器的参数。
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="name">参数名称。</param>
 /// <param name="value">参数值,为null时,自动跳过。</param>
 /// <param name="filter">过滤器。</param>
 /// <returns>返回是否操作成功。</returns>
 protected bool SetBuilderValue(System.Data.Common.DbConnectionStringBuilder builder, string name, object value, ValueFilter filter = null)
 {
     if (value == null)
     {
         return(false);
     }
     try {
         if (filter != null)
         {
             value = filter(value);
             if (value == null)
             {
                 return(false);
             }
         }
         if (value is string)
         {
             if (string.IsNullOrEmpty((string)value))
             {
                 return(false);
             }
         }
         if (name.IndexOf(' ') > -1)
         {
             builder[name] = value;
         }
         else
         {
             FastWrapper.Set(builder, name, value, System.Reflection.BindingFlags.IgnoreCase);
         }
         return(true);
     } catch (System.Exception) {
         return(false);
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// 创建 System.Data.SQLite.SQLiteConnectionStringBuilder
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <returns></returns>
        public static System.Data.Common.DbConnectionStringBuilder CreateConnectionStringBuilder(string connectionString)
        {
            FastWrapper wrapper = GetType("System.Data.SQLite.SQLiteConnectionStringBuilder");

            if (wrapper == null)
            {
                return(null);
            }
            System.Data.Common.DbConnectionStringBuilder builder;
            if (string.IsNullOrEmpty(connectionString))
            {
                builder = FastWrapper.CreateInstance(wrapper.Type) as System.Data.Common.DbConnectionStringBuilder;
            }
            else
            {
                builder = FastWrapper.CreateInstance(wrapper.Type, connectionString) as System.Data.Common.DbConnectionStringBuilder;
                string file = (string)FastWrapper.Get(builder, "DataSource");
                if (!string.IsNullOrEmpty(file) && !file.Equals(":memory:", StringComparison.OrdinalIgnoreCase))
                {
                    CreateFile(file);
                }
            }
            FastWrapper.Set(builder, "Pooling", true);
            FastWrapper.Set(builder, "FailIfMissing", false);
            builder["journal mode"] = "Off";

            return(builder);
        }
Exemplo n.º 5
0
    /// <summary>
    /// 设置对象的成员值(属性或字段)。
    /// </summary>
    /// <param name="instance">对象实例。</param>
    /// <param name="name">成员名称。</param>
    /// <param name="value">成员的值。</param>
    /// <param name="indexs">索引序列(普通属性和字段不传)。</param>
    public static void Set(
#if !net20
        this
#endif
        object instance, string name, object value, object[] indexs = null)
    {
        if (indexs == null)
        {
            FastWrapper.Set(instance, name, value, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.SetField);
        }
        FastWrapper.Set(instance, name, value, indexs, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.SetField);
    }
Exemplo n.º 6
0
        /// <summary>
        /// 创建 System.Data.SQLite.SQLiteConnectionStringBuilder
        /// </summary>
        /// <returns></returns>
        public static System.Data.Common.DbConnectionStringBuilder CreateConnectionStringBuilder()
        {
            FastWrapper wrapper = GetType("System.Data.SQLite.SQLiteConnectionStringBuilder");

            if (wrapper == null)
            {
                return(null);
            }
            System.Data.Common.DbConnectionStringBuilder builder = FastWrapper.CreateInstance(wrapper.Type) as System.Data.Common.DbConnectionStringBuilder;
            FastWrapper.Set(builder, "Pooling", true);
            FastWrapper.Set(builder, "FailIfMissing", false);
            builder["journal mode"] = "Off";
            return(builder);
        }
Exemplo n.º 7
0
        private static void SetUseUnsafeHeaderParsing()
        {
            System.Type type = FastWrapper.GetWarpperType("System.Net.Configuration.SettingsSectionInternal,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
            if (type == null)
            {
                return;
            }
            object instance = FastWrapper.Get(type, "Section");

            if (instance == null)
            {
                return;
            }
            FastWrapper.Set(instance, "useUnsafeHeaderParsing", true);
        }
Exemplo n.º 8
0
 /// <summary>
 /// 创建 System.Data.SQLite.SQLiteConnectionStringBuilder
 /// </summary>
 /// <param name="file">文件</param>
 /// <param name="password">密码</param>
 /// <returns></returns>
 public static System.Data.Common.DbConnectionStringBuilder CreateConnectionStringBuilder(string file, string password)
 {
     System.Data.Common.DbConnectionStringBuilder builder = CreateConnectionStringBuilder();
     if (!string.IsNullOrEmpty(file))
     {
         CreateFile(file);
         FastWrapper.Set(builder, "DataSource", file);
     }
     FastWrapper.Set(builder, "Pooling", true);
     FastWrapper.Set(builder, "FailIfMissing", false);
     builder["journal mode"] = "Off";
     if (!string.IsNullOrEmpty(password))
     {
         FastWrapper.Set(builder, "Password", password);
     }
     return(builder);
 }
Exemplo n.º 9
0
        /// <summary>
        /// 创建查询参数,仅创建对象,不会追加到参数列表。
        /// </summary>
        /// <param name="command"></param>
        /// <param name="parameterName">参数名称,必须以@开头。</param>
        /// <param name="value">参数的值。</param>
        /// <returns>返回参数实例。</returns>
        public static IDbDataParameter CreateParameter(
#if !net20
            this
#endif
            IDbCommand command, string parameterName, object value)
        {
            IDbDataParameter px = value as IDbDataParameter;

            if (px != null)
            {
                return(px);
            }
            CommandParameter p      = value as CommandParameter;
            object           value2 = p == null ? value : p.Value;

            IDbDataParameter result = command.CreateParameter();

            if (!string.IsNullOrEmpty(parameterName))
            {
                result.ParameterName = parameterName;
            }

            bool processed = false;

            if (value2 == null)
            {
                Type type2 = p == null ? null : p.RealType;
                if (type2 != null)
                {
                    result = CreateParameter(command, parameterName, TypeExtensions.DefaultValue(type2));
                    if (type2.IsArray)
                    {
                        result.DbType = DbType.Binary;
                    }
                }
                result.Value = DBNull.Value;

                processed = true;
#if !netcore
            }
            else if (value2 is DateTime)
            {
                if (result is System.Data.OleDb.OleDbParameter)
                {
                    DateTime dateTime = (DateTime)value2;
                    result.Value = dateTime.AddMilliseconds(-dateTime.Millisecond).ToOADate();
                    ((System.Data.OleDb.OleDbParameter)result).OleDbType = System.Data.OleDb.OleDbType.Date;
                    result.DbType = DbType.Double;
                    processed     = true;
                }
                //} else if (result.GetType().FullName == "System.Data.SQLite.SQLiteParameter") {
                //    DateTime dateTime = (DateTime)value2;
                //    //result.DbType = DbType.String;
                //    result.Value = dateTime.ToString("s");
                //}
#endif
            }
            else
            {
                System.Type type = value2.GetType();
#if netcore
                var typeInfo = type.GetTypeInfo();
#else
                var typeInfo = type;
#endif
                if (typeInfo.IsEnum)
                {
                    IDbDataParameter result2 = command.CreateParameter();
                    result2.ParameterName = result.ParameterName;
                    result2.Value         = TypeExtensions.Convert <long>(value2);
                    result    = result2;
                    processed = true;
                }
                else if (typeInfo.IsClass && type != typeof(string))
                {
                    IDbDataParameter result2 = command.CreateParameter();
                    result2.ParameterName = result.ParameterName;
                    result2.Value         = Symbol.Serialization.Json.ToString(value2, true);
                    result = result2;
                    if (command.GetType().Namespace.StartsWith("Npgsql"))
                    {
                        FastWrapper.Set(result, "NpgsqlDbType", TypeExtensions.Convert("Json", NpgsqlDatabaseProvider.GetDbType()));
                    }
                    processed = true;
                }
            }
            if (p != null && p.Properties != null && p.Properties.Count > 0)
            {
                foreach (System.Collections.Generic.KeyValuePair <string, object> item in p.Properties)
                {
                    FastWrapper.Set(result, item.Key, item.Value);
                }
            }
            if (!processed)
            {
                result.Value = value2;
                processed    = true;
            }

            return(result);
        }