Exemple #1
0
        /// <summary>
        /// 生成 value 对应的 SQL 片断
        /// </summary>
        /// <param name="value">SQL值</param>
        /// <param name="token">解析SQL命令上下文</param>
        /// <param name="m">value 对应的成员</param>
        /// <returns></returns>
        public string GetSqlValue(object value, ITranslateContext token, MemberVisitedStack.VisitedMember m)
        {
            ColumnAttribute column = m != null?TypeUtils.GetColumnAttribute(m.Member, m.ReflectedType) : null;

            return(this.GetSqlValue(value, token, column));
        }
Exemple #2
0
        /// <summary>
        /// 生成 value 对应的 SQL 片断
        /// <para>因为会使用到默认值,故此重载仅限 INSERT / UPDATE 时使用</para>
        /// </summary>
        /// <param name="value">SQL值</param>
        /// <param name="context">解析SQL命令时的参数上下文</param>
        /// <param name="column">数据列特性</param>
        /// <returns></returns>
        public string GetSqlValueWidthDefault(object value, ITranslateContext context, ColumnAttribute column)
        {
            if (value == null && column != null && column.Default != null)
            {
                // 插入值为空时使用默认值
                return(column.Default.ToString());
            }
            if (value != null && column != null && column.Default != null)
            {
                // 值不为空,但只有.net默认值时也使用数据库默认值
                Type t          = value.GetType();
                bool useDefault = false;
                if (t == typeof(DateTime) && (((DateTime)value) == DateTime.MinValue || ((DateTime)value).ToString("yyyy-MM-dd") == "0001-01-01"))
                {
                    useDefault = true;
                }
                // 插入值为空时使用默认值
                if (useDefault)
                {
                    return(column.Default.ToString());
                }
            }

            return(this.GetSqlValue(value, context, column));
        }
        /// <summary>
        /// 获取成员对应的数据库字段名称
        /// </summary>
        /// <param name="memberName">实体成员名称(字段/属性)</param>
        /// <returns></returns>
        public string GetFieldName(string memberName)
        {
            ColumnAttribute column = this.GetMemberAttribute <ColumnAttribute>(memberName);

            return(column != null && !string.IsNullOrEmpty(column.Name) ? column.Name : memberName);
        }