コード例 #1
0
        /// <summary>
        ///     更新一个对象数据到数据库中
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="sql">语句</param>
        /// <param name="bolIsProcedure">是否是存储过程</param>
        /// <param name="obj">数据对象</param>
        /// <returns>更新数量</returns>
        public int SqlExcuteUpdateOrInsertOrDeleteObject <T>(string sql, bool bolIsProcedure, T obj)
        {
            lock (_lockThis)
            {
                var objType = obj.GetType();

                var propertyArray = TypeOfCacheManager.GetInstance().GetTypeProperty(objType).Values;

                Command.CommandText = sql;
                Command.Parameters.Clear();

                Command.CommandType = bolIsProcedure ? CommandType.StoredProcedure : CommandType.Text;

                foreach (var props in propertyArray)
                {
                    var values = props.GetValue(obj, null);

                    if (values != null)
                    {
                        Command.Parameters.AddWithValue("@" + props.Name, values);
                    }
                }

                return(Command.ExecuteNonQuery());
            }
        }
コード例 #2
0
ファイル: TypeOfTable.cs プロジェクト: luyikk/SqlExecuteXY
        public static TypeOfCacheManager GetInstance()
        {
            lock (Lockthis)
            {
                if (_my == null)
                {
                    _my = new TypeOfCacheManager();
                }
            }

            return(_my);
        }
コード例 #3
0
        protected List <T> Deserializer <T>(IDbCommand command) where T : new()
        {
            using (var dataRead = command.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)
                   )
            {
#if NET45
                var func = DeserializerManager.GetInstance().GetFuncForType <T>(dataRead);

                return(func(dataRead));
#else
                var objList = new List <T>();

                var objType = typeof(T);

                var names = new List <string>(dataRead.FieldCount);

                for (var i = 0; i < dataRead.FieldCount; i++)
                {
                    names.Add(dataRead.GetName(i));
                }

                var tmpdiy = TypeOfCacheManager.GetInstance().GetTypeProperty(objType);


                while (dataRead.Read())
                {
                    var temp = new T();

                    foreach (var fieldname in names)
                    {
                        PropertyInfo prope;
                        if (tmpdiy.TryGetValue(fieldname, out prope))
                        {
                            var data = dataRead[fieldname];

                            if (!(data is DBNull))
                            {
                                prope.SetValue(temp, data, null);
                            }
                        }
                    }

                    objList.Add(temp);
                }

                dataRead.Close();

                return(objList);
#endif
            }
        }