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()); }
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()); }
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()); }
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()); }
public override void Visit(SqlParameter expression) { _writer.WriteParameter(expression.ParameterName); ParameterVisited?.Invoke(expression); }