Пример #1
0
        public void WriteStartFrom_WhenSelectStatement_WritesWhere()
        {
            StringBuilder builder = new StringBuilder();

            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartSelect();
                writer.WriteColumn("Id");
                writer.WriteColumn("Name", "n");
                writer.WriteColumn("Users", "Email", "e");
                writer.WriteStartFrom();
                writer.WriteTable("Users");
                writer.WriteStartWhere();
                Assert.AreEqual(SqlWriterState.StartWhere, writer.WriteState);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteParameter("Id");
                writer.WriteOperator(SqlBinaryOperator.Or);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.LessThan);
                writer.WriteValue(100);
            }

            Assert.AreEqual("SELECT [Id], [Name] AS [n], [Users].[Email] AS [e] FROM [Users] WHERE ([Id] = @Id) OR ([Id] < 100)", builder.ToString());
        }
Пример #2
0
        public void WriteStartSet_WhenUpdateStatement_WritesParametersAndValues()
        {
            StringBuilder builder = new StringBuilder();
            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartUpdate();
                writer.WriteTable("Users");
                writer.WriteStartSet();
                writer.WriteColumn("Id");
                writer.WriteValue(15);
                writer.WriteColumn("UserName");
                writer.WriteParameter("UserName");
                writer.WriteColumn("Email");
                writer.WriteParameter("Email");
                Assert.AreEqual(SqlWriterState.Set, writer.WriteState);
            }

            Assert.AreEqual("UPDATE [Users] SET [Id] = 15, [UserName] = @UserName, [Email] = @Email", builder.ToString());
        }
Пример #3
0
        public void WriteStartSet_WhenUpdateStatement_WritesParametersAndValues()
        {
            StringBuilder builder = new StringBuilder();

            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartUpdate();
                writer.WriteTable("Users");
                writer.WriteStartSet();
                writer.WriteColumn("Id");
                writer.WriteValue(15);
                writer.WriteColumn("UserName");
                writer.WriteParameter("UserName");
                writer.WriteColumn("Email");
                writer.WriteParameter("Email");
                Assert.AreEqual(SqlWriterState.Set, writer.WriteState);
            }

            Assert.AreEqual("UPDATE [Users] SET [Id] = 15, [UserName] = @UserName, [Email] = @Email", builder.ToString());
        }
Пример #4
0
        public void WriteStartOn_WritesOnClause()
        {
            StringBuilder builder = new StringBuilder();

            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartSelect();
                writer.WriteColumn("Id");
                writer.WriteColumn("Name", "n");
                writer.WriteColumn("Users", "Email", "e");
                writer.WriteStartFrom();
                writer.WriteTable("Users");
                writer.WriteStartJoin();
                writer.WriteTable("Profiles");
                writer.WriteStartOn();
                writer.WriteColumn("Users", "Id", null);
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteColumn("Profiles", "UserId", null);
                writer.WriteOperator(SqlBinaryOperator.And);
                writer.WriteColumn("Users", "Name", null);
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteParameter("Name");
                writer.WriteStartWhere();
                Assert.AreEqual(SqlWriterState.StartWhere, writer.WriteState);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteParameter("Id");
                writer.WriteOperator(SqlBinaryOperator.Or);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.LessThan);
                writer.WriteValue(100);
                writer.WriteStartOrderBy();
                writer.WriteColumn("Id");
                writer.WriteSortOrder(SqlSortOrder.Ascending);
                writer.WriteColumn("Name");
                writer.WriteSortOrder(SqlSortOrder.Descending);
            }

            Assert.AreEqual("SELECT [Id], [Name] AS [n], [Users].[Email] AS [e] FROM [Users] JOIN [Profiles] ON ([Users].[Id] = [Profiles].[UserId]) AND ([Users].[Name] = @Name) WHERE ([Id] = @Id) OR ([Id] < 100) ORDER BY [Id] ASC, [Name] DESC", builder.ToString());
        }
Пример #5
0
        public void WriteParameter_WhenInsertStatement_WritesParameters()
        {
            StringBuilder builder = new StringBuilder();
            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartInsert();
                writer.WriteStartInto();
                writer.WriteTable("Users");
                writer.WriteColumn("Id");
                writer.WriteColumn("UserName");
                writer.WriteColumn("Email");
                writer.WriteStartValues();
                Assert.AreEqual(SqlWriterState.StartValues, writer.WriteState);
                writer.WriteParameter("Id");
                writer.WriteParameter("UserName");
                writer.WriteParameter("Email");
                writer.WriteEndValues();
                Assert.AreEqual(SqlWriterState.EndValues, writer.WriteState);
            }

            Assert.AreEqual("INSERT INTO [Users] ([Id], [UserName], [Email]) VALUES (@Id, @UserName, @Email)", builder.ToString());
        }
Пример #6
0
        public void WriteParameter_WhenInsertStatement_WritesParameters()
        {
            StringBuilder builder = new StringBuilder();

            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartInsert();
                writer.WriteStartInto();
                writer.WriteTable("Users");
                writer.WriteColumn("Id");
                writer.WriteColumn("UserName");
                writer.WriteColumn("Email");
                writer.WriteStartValues();
                Assert.AreEqual(SqlWriterState.StartValues, writer.WriteState);
                writer.WriteParameter("Id");
                writer.WriteParameter("UserName");
                writer.WriteParameter("Email");
                writer.WriteEndValues();
                Assert.AreEqual(SqlWriterState.EndValues, writer.WriteState);
            }

            Assert.AreEqual("INSERT INTO [Users] ([Id], [UserName], [Email]) VALUES (@Id, @UserName, @Email)", builder.ToString());
        }
Пример #7
0
        public void WriteStartFrom_WhenSelectStatement_WritesWhere()
        {
            StringBuilder builder = new StringBuilder();
            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartSelect();
                writer.WriteColumn("Id");
                writer.WriteColumn("Name", "n");
                writer.WriteColumn("Users", "Email", "e");
                writer.WriteStartFrom();
                writer.WriteTable("Users");
                writer.WriteStartWhere();
                Assert.AreEqual(SqlWriterState.StartWhere, writer.WriteState);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteParameter("Id");
                writer.WriteOperator(SqlBinaryOperator.Or);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.LessThan);
                writer.WriteValue(100);
            }

            Assert.AreEqual("SELECT [Id], [Name] AS [n], [Users].[Email] AS [e] FROM [Users] WHERE ([Id] = @Id) OR ([Id] < 100)", builder.ToString());
        }
Пример #8
0
        public void WriteStartOn_WritesOnClause()
        {
            StringBuilder builder = new StringBuilder();
            using (SqlWriter writer = new SqlWriter(builder))
            {
                writer.WriteStartSelect();
                writer.WriteColumn("Id");
                writer.WriteColumn("Name", "n");
                writer.WriteColumn("Users", "Email", "e");
                writer.WriteStartFrom();
                writer.WriteTable("Users");
                writer.WriteStartJoin();
                writer.WriteTable("Profiles");
                writer.WriteStartOn();
                writer.WriteColumn("Users", "Id", null);
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteColumn("Profiles", "UserId", null);
                writer.WriteOperator(SqlBinaryOperator.And);
                writer.WriteColumn("Users", "Name", null);
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteParameter("Name");
                writer.WriteStartWhere();
                Assert.AreEqual(SqlWriterState.StartWhere, writer.WriteState);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.Equal);
                writer.WriteParameter("Id");
                writer.WriteOperator(SqlBinaryOperator.Or);
                writer.WriteColumn("Id");
                writer.WriteOperator(SqlBinaryOperator.LessThan);
                writer.WriteValue(100);
                writer.WriteStartOrderBy();
                writer.WriteColumn("Id");
                writer.WriteSortOrder(SqlSortOrder.Ascending);
                writer.WriteColumn("Name");
                writer.WriteSortOrder(SqlSortOrder.Descending);
            }

            Assert.AreEqual("SELECT [Id], [Name] AS [n], [Users].[Email] AS [e] FROM [Users] JOIN [Profiles] ON ([Users].[Id] = [Profiles].[UserId]) AND ([Users].[Name] = @Name) WHERE ([Id] = @Id) OR ([Id] < 100) ORDER BY [Id] ASC, [Name] DESC", builder.ToString());
        }
Пример #9
0
 public override void Visit(SqlParameter expression)
 {
     _writer.WriteParameter(expression.ParameterName);
     ParameterVisited?.Invoke(expression);
 }