示例#1
0
        protected override string GetCreateTableSql()
        {
            StringBuilder builder    = new StringBuilder($"CREATE TABLE IF NOT EXISTS  `{Schema.Database }`.`{Schema.TableName}`  (");
            string        columNames = string.Join(", ", Columns.Select(p => $"`{p.Name}` {ConvertToDbType(p.DataType.ToLower())} {GetAutoIncrementString(p.Name)}"));

            builder.Append(columNames.Substring(0, columNames.Length));

            foreach (var index in Indexs)
            {
                string name            = string.Join("_", index.Select(c => c));
                string indexColumNames = string.Join(", ", index.Select(c => $"`{c}`"));
                builder.Append($", KEY `index_{name}` ({indexColumNames.Substring(0, indexColumNames.Length)})");
            }

            foreach (var unique in Uniques)
            {
                string name             = string.Join("_", unique.Select(c => c));
                string uniqueColumNames = string.Join(", ", unique.Select(c => $"`{c}`"));
                builder.Append($", UNIQUE KEY `unique_{name}` ({uniqueColumNames.Substring(0, uniqueColumNames.Length)})");
            }


            string primaryColumNames = string.Join(", ", Primary.Select(c => $"`{c}`"));

            builder.Append($", PRIMARY KEY ({primaryColumNames.Substring(0, primaryColumNames.Length)})");

            builder.Append(") ENGINE=InnoDB AUTO_INCREMENT=1  DEFAULT CHARSET=utf8");
            string sql = builder.ToString();

            Logger.Info(sql);
            return(sql);
        }
        /// <summary>
        /// In HTML konvertieren
        /// </summary>
        /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param>
        /// <returns>Das Control als HTML</returns>
        public override IHtmlNode Render(RenderContext context)
        {
            if (Header.Content.Count == 0 && Preferences.Count == 0 && Primary.Count == 0 && Secondary.Count == 0)
            {
                return(null);
            }

            var elements = new List <IHtmlNode>
            {
                Header.Render(context)
            };

            elements.AddRange(Preferences.Select(x => x.Render(context)));
            elements.AddRange(Primary.Select(x => x.Render(context)));
            elements.AddRange(Secondary.Select(x => x.Render(context)));


            return(new HtmlElementTextContentDiv(elements)
            {
                ID = ID,
                Class = Css.Concatenate("footer", GetClasses()),
                Style = Style.Concatenate("display: block;", GetStyles()),
                Role = Role
            });
        }
示例#3
0
        protected override string GetUpdateSql()
        {
            string setParamenters     = string.Join(", ", UpdateColumns.Select(p => $"`{p.Name}`=@{p.Name}"));
            string primaryParamenters = string.Join(" AND ", Primary.Select(p => $"`{p.Name}`=@{p.Name}"));

            var sqlBuilder = new StringBuilder();

            sqlBuilder.AppendFormat("UPDATE `{0}`.`{1}` SET {2} WHERE {3};",
                                    Schema.Database,
                                    Schema.TableName,
                                    setParamenters, primaryParamenters);

            return(sqlBuilder.ToString());
        }
        protected override string GetSelectSql()
        {
            string selectParamenters  = string.Join(", ", UpdateColumns.Select(p => $"[{p.Name}]"));
            string primaryParamenters = string.Join(" AND ", Primary.Select(p => $"[{p.Name}]=@{p.Name}"));

            var sqlBuilder = new StringBuilder();

            sqlBuilder.AppendFormat("USE {0}; SELECT {1} FROM [{2}] WHERE {3};",
                                    Schema.Database,
                                    selectParamenters,
                                    Schema.TableName,
                                    primaryParamenters);

            return(sqlBuilder.ToString());
        }
        /// <summary>
        /// In HTML konvertieren
        /// </summary>
        /// <param name="context">Der Kontext, indem das Steuerelement dargestellt wird</param>
        /// <returns>Das Control als HTML</returns>
        public override IHtmlNode Render(RenderContext context)
        {
            if (Preferences.Count == 0 && Primary.Count == 0 && Secondary.Count == 0)
            {
                return(null);
            }

            var preferences = new HtmlElementTextContentDiv(Preferences.Select(x => x.Render(context)));
            var primary     = new HtmlElementTextContentDiv(Primary.Select(x => x.Render(context)));
            var secondary   = new HtmlElementTextContentDiv(Secondary.Select(x => x.Render(context)));

            return(new HtmlElementTextContentDiv(preferences, primary, secondary)
            {
                ID = ID,
                Class = Css.Concatenate("proterty", GetClasses()),
                Style = Style.Concatenate("display: block;", GetStyles()),
                Role = Role
            });
        }
示例#6
0
        protected override string GetCreateTableSql()
        {
            StringBuilder builder    = new StringBuilder($"CREATE TABLE IF NOT EXISTS  `{Schema.Database }`.`{Schema.TableName}`  (");
            string        columNames = string.Join(", ", Columns.Select(p => $"`{p.Name}` {ConvertToDbType(p.DataType)} "));

            builder.Append(columNames);
            builder.Append(Primary == null || Primary.Count == 0 ? (string.IsNullOrEmpty(columNames) ? "" : ",") + "`__id` bigint AUTO_INCREMENT" : "");
            foreach (var index in Indexs)
            {
                string name            = string.Join("_", index.Select(c => c));
                string indexColumNames = string.Join(", ", index.Select(c => $"`{c}`"));
                builder.Append($", KEY `index_{name}` ({indexColumNames.Substring(0, indexColumNames.Length)})");
            }

            foreach (var unique in Uniques)
            {
                string name             = string.Join("_", unique.Select(c => c));
                string uniqueColumNames = string.Join(", ", unique.Select(c => $"`{c}`"));
                builder.Append($", UNIQUE KEY `unique_{name}` ({uniqueColumNames.Substring(0, uniqueColumNames.Length)})");
            }

            string primaryColumNames = Primary == null || Primary.Count == 0 ? "`__id` " : string.Join(", ", Primary.Select(c => $"`{c.Name}`"));

            builder.Append($", PRIMARY KEY ({primaryColumNames.Substring(0, primaryColumNames.Length)})");

            builder.Append(") ENGINE=InnoDB AUTO_INCREMENT=1  DEFAULT CHARSET=utf8");
            string sql = builder.ToString();

            return(sql);
        }
        protected override string GetCreateTableSql()
        {
            var           identity    = "IDENTITY(1,1)";
            StringBuilder builder     = new StringBuilder($"USE {Schema.Database}; IF OBJECT_ID('{Schema.TableName}', 'U') IS NULL CREATE table {Schema.TableName} (");
            StringBuilder columnNames = new StringBuilder();

            if (Primary.Count == 0)
            {
                foreach (var p in Columns)
                {
                    columnNames.Append($",[{p.Name}] {ConvertToDbType(p.DataType)} NULL");
                }
            }
            else
            {
                foreach (var p in Columns)
                {
                    var identityPart = AutoIncrement.Contains(p.Name) ? identity : "";
                    var nullPart     = Primary.Any(k => k.Name == p.Name) ? "NOT NULL" : "NULL";

                    columnNames.Append($",[{p.Name}] {ConvertToDbType(p.DataType)} {identityPart} {nullPart}");
                }
            }

            builder.Append(columnNames.ToString().Substring(1, columnNames.Length - 1));
            builder.Append(Primary == null || Primary.Count == 0 ? (columnNames.Length == 0 ? "" : ",") + "[__id] [int] IDENTITY(1,1) NOT NULL," : ",");
            string primaryKey = Primary == null || Primary.Count == 0 ? "[__id] ASC" : string.Join(", ", Primary.Select(p => $"[{p.Name}] ASC"));

            builder.Append(
                $" CONSTRAINT [PK_{Schema.TableName}] PRIMARY KEY CLUSTERED ({primaryKey.Substring(0, primaryKey.Length)})WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON[PRIMARY]) ON[PRIMARY];");

            foreach (var index in Indexs)
            {
                string name            = string.Join("_", index.Select(c => c));
                string indexColumNames = string.Join(", ", index.Select(c => $"[{c}]"));
                builder.Append($"CREATE NONCLUSTERED INDEX [index_{name}] ON {Schema.TableName} ({indexColumNames.Substring(0, indexColumNames.Length)});");
            }

            foreach (var unique in Uniques)
            {
                string name             = string.Join("_", unique.Select(c => c));
                string uniqueColumNames = string.Join(", ", unique.Select(c => $"[{c}]"));
                builder.Append($"CREATE UNIQUE NONCLUSTERED INDEX [unique_{name}] ON {Schema.TableName} ({uniqueColumNames.Substring(0, uniqueColumNames.Length)});");
            }
            return(builder.ToString());
        }