Ejemplo n.º 1
0
        /// <summary>
        /// 获取指定实体类的Sql语句参数集合
        /// </summary>
        /// <param name="cmd">Sql语句</param>
        /// <param name="entity">实体类</param>
        /// <returns>Sql语句参数集合</returns>
        internal static DataParameter[] InternalGetSqlParameters(AbstractSqlCommand cmd, Object entity)
        {
            List <DataParameter> parameters = new List <DataParameter>();

            if (entity == null)
            {
                return(parameters.ToArray());
            }

            Type entityType = entity.GetType();

            PropertyInfo[] props = entityType.GetProperties();

            foreach (PropertyInfo prop in props)
            {
                DatabaseColumnAttribute attr = null;
                DataType?dataType            = null;
                Object[] objs = prop.GetCustomAttributes(TypeOfDatabaseColumnAttribute, true);

                foreach (Object obj in objs)
                {
                    if ((attr = obj as DatabaseColumnAttribute) != null)
                    {
                        break;
                    }
                }

                if (attr != null)
                {
                    dataType = attr.DataType;

                    if (!dataType.HasValue)
                    {
                        dataType = DataTypeHelper.InternalGetDataType(prop.PropertyType);
                    }

                    DataParameter parameter = cmd.CreateDataParameter(attr.ColumnName, dataType.Value, prop.GetValue(entity, null));
                    parameters.Add(parameter);
                }
            }

            return(parameters.ToArray());
        }