Пример #1
0
        private void CompileColumn(IQueryPart part, TextWriter writer)
        {
            var collection = part as IValueCollectionQueryPart;
            if (collection == null)
            {
                writer.Write(part.Compile());
                return;
            }

            var column = collection.GetValue(KeyValuePart.MemberName);
            var type = collection.GetValue(KeyValuePart.MemberType);
            var nullable = collection.GetValue(KeyValuePart.Nullable);

            writer.Write("{0} {1}{2}", column, type, string.IsNullOrEmpty(nullable) || nullable.ToLower() == "true" ? "" : " NOT NULL");
        }
Пример #2
0
        private void CompileForeignKey(IQueryPart part, TextWriter writer)
        {
            var collection = part as IValueCollectionQueryPart;
            if (collection == null)
            {
                writer.Write(part.Compile());
                return;
            }

            var column = collection.GetValue(KeyValuePart.MemberName);
            var reference = collection.GetValue(KeyValuePart.ReferenceTable);
            var referenceMember = collection.GetValue(KeyValuePart.ReferenceMember);
            //var nullable = collection.GetValue(KeyValuePart.Nullable);

            writer.Write("FOREIGN KEY({0}) REFERENCES {1}({2})", column, reference, referenceMember);
        }
Пример #3
0
        private void CompilePrimaryColumn(IQueryPart part, TextWriter writer)
        {
            var collection = part as IValueCollectionQueryPart;
            if (collection == null)
            {
                writer.Write(part.Compile());
                return;
            }

            var column = collection.GetValue(KeyValuePart.MemberName);
            var type = collection.GetValue(KeyValuePart.MemberType);
            var nullable = collection.GetValue(KeyValuePart.Nullable);
            var autoIncremtent = collection.GetValue(KeyValuePart.AutoIncrement);

            writer.Write("{0} {1} PRIMARY KEY{2}{3}",
                    column,
                    type,
                    string.IsNullOrEmpty(nullable) || nullable.ToLower() == "true" ? "" : " NOT NULL",
                    !string.IsNullOrEmpty(autoIncremtent) && autoIncremtent.ToLower() == "true" ? " AUTOINCREMENT" : "");
        }
Пример #4
0
        private void RenameTable(IQueryPart part, TextWriter writer)
        {
            var collection = part as IValueCollectionQueryPart;
            if (collection == null)
            {
                writer.Write(part.Compile());
                return;
            }

            var original = collection.GetValue(KeyValuePart.Key);
            var value = collection.GetValue(KeyValuePart.Value);

            writer.Write("ALTER TABLE {0} RENAME TO {1}", original, value);
        }
Пример #5
0
        private void CompileParameter(IQueryPart part, TextWriter writer, IQueryPart parent)
        {
            writer.Write(part.Compile());

            if (parent != null && parent.Parts.Last() != part)
            {
                writer.Write(", ");
            }
        }
Пример #6
0
 private void CreateTable(IQueryPart part, TextWriter writer)
 {
     writer.Write("CREATE TABLE IF NOT EXISTS {0} (", part.Compile());
 }
Пример #7
0
        private void CompileCreateDatabase(IQueryPart part, TextWriter writer)
        {
            var database = part.Compile();

            writer.WriteLine("DECLARE @device_directory NVARCHAR(520)");
            writer.WriteLine("SELECT @device_directory = SUBSTRING(filename, 1, CHARINDEX(N'master.mdf', LOWER(filename)) - 1)");
            writer.WriteLine("FROM master.dbo.sysaltfiles WHERE dbid = 1 AND fileid = 1");
            //sb.AppendLine(string.Format("EXECUTE (N'CREATE DATABASE {0} ON PRIMARY (NAME = N''Northwind'', FILENAME = N''' + @device_directory + N'{0}.mdf'') LOG ON (NAME = N''Northwind_log'',  FILENAME = N''' + @device_directory + N'{0}.ldf'')')", database));

            writer.WriteLine("EXECUTE (N'CREATE DATABASE {0}", database);
            writer.WriteLine("ON PRIMARY (NAME = N''{0}'', FILENAME = N''' + @device_directory + N'{0}.mdf'')", database);
            writer.WriteLine("LOG ON (NAME = N''{0}_log'',  FILENAME = N''' + @device_directory + N'{0}_log.ldf'')')", database);
            //writer.WriteLine("EXECUTE (N'CREATE DATABASE {0} ON PRIMARY (NAME = N''{0}'', FILENAME = N''' + @device_directory + N'{0}.mdf'') LOG ON (NAME = N''{0}_log'',  FILENAME = N''' + @device_directory + N'{0}.ldf'')')", database);

            //var path = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Data");

            //writer.WriteLine(string.Format("EXECUTE (N'CREATE DATABASE {0}", database));
            //writer.WriteLine(string.Format("ON PRIMARY (NAME = N''{0}'', FILENAME = ''{1}'')", database, Path.Combine(path, database + ".mdf")));
            //writer.WriteLine(string.Format("LOG ON (NAME = N''{0}_log'',  FILENAME = ''{1}'')')", database, Path.Combine(path, database + "_log.ldf")));
        }
Пример #8
0
        private void CompileOutputParameterSelect(IQueryPart part, TextWriter writer, IQueryPart parent)
        {
            if (parent != null && parent.Parts.FirstOrDefault(p => p.OperationType == OperationType.OutParameterSelect) == part)
            {
                WriteBlank(writer);
            }

            writer.Write("@{0} AS {0}", part.Compile());

            if (parent != null && parent.Parts.Last() != part)
            {
                writer.Write(", ");
            }
        }
Пример #9
0
        private void CompileMemberEqualsValuePart(IQueryPart part, TextWriter writer, IQueryPart parent)
        {
            var collection = part as IValueCollectionQueryPart;
            if (collection == null)
            {
                writer.Write(part.Compile());
                return;
            }

            var key = collection.GetValue(KeyValuePart.MemberName);
            var value = collection.GetValue(KeyValuePart.Value);

            writer.Write("{0} = {1}", key, value);
            AppendComma(part, writer, parent);
        }
Пример #10
0
 protected void CompileFormat(string format, IQueryPart part, TextWriter writer)
 {
     writer.Write(format, part.Compile());
 }
Пример #11
0
        private void CompileJoin(IQueryPart part, TextWriter writer)
        {
            var entityMap = part as IEntityPart;
            if (entityMap == null)
            {
                writer.Write("JOIN {0}", part.Compile());
                return;
            }

            writer.Write("JOIN {0}{1}", entityMap.Entity, string.IsNullOrEmpty(entityMap.EntityAlias) ? string.Empty : string.Format(" {0}", entityMap.EntityAlias));
        }
Пример #12
0
        private void CompileFieldFunction(string function, IQueryPart part, TextWriter writer, IQueryPart parent)
        {
            var field = part as IFieldPart;
            if (field == null)
            {
                // try to compile the expression
                writer.Write(part.Compile());
                return;
            }

            //TODO: EntityAlias is allways null, It has to be able to be set when creating a Count expression
            writer.Write("{0}({1}) AS {2}", function, field.Field, field.FieldAlias ?? field.Field);

            if (parent.Parts.Last() != part)
            {
                writer.Write(",");
            }
        }
Пример #13
0
        private void CompileField(IQueryPart part, TextWriter writer, IQueryPart parent)
        {
            var field = part as IFieldPart;
            if (field == null)
            {
                // try to compile the expression
                writer.Write(part.Compile());
                return;
            }

            if (!string.IsNullOrEmpty(field.EntityAlias) || !string.IsNullOrEmpty(field.Entity))
            {
                writer.Write(" {0}.", field.EntityAlias ?? field.Entity);
            }
            else
            {
                writer.Write(" ");
            }

            writer.Write(field.Field);

            if (!string.IsNullOrEmpty(field.FieldAlias))
            {
                writer.Write(" AS {0}", field.FieldAlias);
            }

            if (parent != null && parent.Parts.Last() != part)
            {
                writer.Write(",");
            }
        }
Пример #14
0
 private void CompileCommand(string command, IQueryPart part, TextWriter writer)
 {
     writer.Write("{0} {1}", command, part.Compile());
 }
Пример #15
0
 protected void CompileValue(IQueryPart part, TextWriter writer)
 {
     writer.Write(part.Compile());
 }