Beispiel #1
0
        /// <summary>
        /// 根据指定操作及表达式生成语句。
        /// </summary>
        /// <param name="operate">操作对象。</param>
        /// <param name="content">表达式。</param>
        /// <returns>生成的语句。</returns>
        public string Generate(DbOperateBase operate, DbExpression content)
        {
            var context = new GenerateContext(operate, this);

            context.Data.Inititalze(content);
            SqlFragment fragment = null;

            switch (operate.Type)
            {
            case EOperateType.InsertObjects: fragment = GenerateForInsert(context); break;

            case EOperateType.UpdateObjects: fragment = GenerateForUpdate(context); break;

            case EOperateType.DeleteObjects: fragment = GenerateForDelete(context); break;

            case EOperateType.QueryObject:
            case EOperateType.QueryCollection: fragment = GenerateForQuery(context, content); break;

            case EOperateType.InsertPropertys: fragment = GenerateForInsert(context, content); break;

            case EOperateType.UpdatePropertys: fragment = GenerateForUpdate(context, content); break;

            case EOperateType.InsertStatement: fragment = GenerateForInsertStatement(context, content); break;

            case EOperateType.UpdateStatement: fragment = GenerateForUpdateStatement(context, content); break;

            case EOperateType.DeleteStatement: fragment = GenerateForDeleteStatement(context, content); break;

            case EOperateType.AddRelation:
            case EOperateType.RemoveRelation: fragment = GenerateForRelation(context); break;

            default:
                if (operate is DbMaintenanceOperateBase maintenance)
                {
                    fragment = GenerateForMaintenance(context);
                }
                break;
            }
            return(fragment.ToString());
        }