• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / FluentCommand / 23278216331

19 Mar 2026 03:19AM UTC coverage: 57.398% (+0.7%) from 56.658%
23278216331

push

github

pwelter34
Enable nullable and improve source generators

1403 of 3069 branches covered (45.72%)

Branch coverage included in aggregate %.

527 of 907 new or added lines in 58 files covered. (58.1%)

22 existing lines in 10 files now uncovered.

4288 of 6846 relevant lines covered (62.64%)

330.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

40.0
/src/FluentCommand.SqlServer/Query/ChangeTableBuilderExtensions.cs
1
namespace FluentCommand.Query;
2

3
/// <summary>
4
/// Provides extension methods for integrating SQL Server <c>CHANGETABLE (CHANGES ...)</c> queries into select query builders.
5
/// </summary>
6
public static class ChangeTableBuilderExtensions
7
{
8
    /// <summary>
9
    /// Adds a <c>CHANGETABLE (CHANGES ...)</c> clause to the select query using a custom <see cref="ChangeTableBuilder"/> configuration.
10
    /// </summary>
11
    /// <param name="selectBuilder">The <see cref="SelectBuilder"/> to extend with change tracking support.</param>
12
    /// <param name="builder">An action to configure the <see cref="ChangeTableBuilder"/> for the change tracking query.</param>
13
    /// <returns>
14
    /// The same <see cref="SelectBuilder"/> instance for fluent chaining.
15
    /// </returns>
16
    /// <exception cref="ArgumentNullException">
17
    /// Thrown if <paramref name="selectBuilder"/> or <paramref name="builder"/> is <c>null</c>.
18
    /// </exception>
19
    public static SelectBuilder ChangeTable(this SelectBuilder selectBuilder, Action<ChangeTableBuilder> builder)
20
    {
21
        if (selectBuilder is null)
×
22
            throw new ArgumentNullException(nameof(selectBuilder));
×
23
        if (builder is null)
×
24
            throw new ArgumentNullException(nameof(builder));
×
25

26
        var queryBuilder = selectBuilder as IQueryBuilder;
×
27

28
        var innerBuilder = new ChangeTableBuilder(queryBuilder.QueryGenerator, queryBuilder.Parameters);
×
29
        builder(innerBuilder);
×
30

31
        var statement = innerBuilder.BuildStatement();
×
NEW
32
        if (statement is not null)
×
NEW
33
            selectBuilder.FromRaw(statement.Statement);
×
34

35
        return selectBuilder;
×
36
    }
37

38
    /// <summary>
39
    /// Adds a <c>CHANGETABLE (CHANGES ...)</c> clause to the entity select query
40
    /// The table and schema are preset from the entity type.
41
    /// </summary>
42
    /// <typeparam name="TEntity">The entity type representing the table for change tracking.</typeparam>
43
    /// <param name="selectBuilder">The <see cref="SelectEntityBuilder{TEntity}"/> to extend with change tracking support.</param>
44
    /// <param name="builder">An action to configure the <see cref="ChangeTableBuilder"/> for the change tracking query.</param>
45
    /// <returns>
46
    /// The same <see cref="SelectEntityBuilder{TEntity}"/> instance for fluent chaining.
47
    /// </returns>
48
    /// <exception cref="ArgumentNullException">
49
    /// Thrown if <paramref name="selectBuilder"/> or <paramref name="builder"/> is <c>null</c>.
50
    /// </exception>
51
    public static SelectEntityBuilder<TEntity> ChangeTable<TEntity>(this SelectEntityBuilder<TEntity> selectBuilder, Action<ChangeTableBuilder> builder)
52
        where TEntity : class
53
    {
54
        if (selectBuilder is null)
2!
55
            throw new ArgumentNullException(nameof(selectBuilder));
×
56
        if (builder is null)
2!
57
            throw new ArgumentNullException(nameof(builder));
×
58

59
        var queryBuilder = selectBuilder as IQueryBuilder;
2✔
60

61
        var innerBuilder = new ChangeTableBuilder(queryBuilder.QueryGenerator, queryBuilder.Parameters);
2✔
62

63
        // preset table and schema
64
        innerBuilder.From<TEntity>();
2✔
65

66
        builder(innerBuilder);
2✔
67

68
        var statement = innerBuilder.BuildStatement();
2✔
69
        if (statement is not null)
2✔
70
            selectBuilder.FromRaw(statement.Statement);
2✔
71

72
        return selectBuilder;
2✔
73
    }
74
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc