Skip to content

Commit 9d578a4

Browse files
committed
Remove definitions of System.Data.Common DbBatch types.
When these are supported in a future .NET Core version, conditional compilation will be used to derive from the appropriate base classes.
1 parent acf788b commit 9d578a4

File tree

4 files changed

+27
-133
lines changed

4 files changed

+27
-133
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlBatch.cs

Lines changed: 18 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -7,69 +7,9 @@
77
using MySqlConnector.Protocol.Serialization;
88
using MySqlConnector.Utilities;
99

10-
#if NET45 || NET461 || NET471 || NETSTANDARD1_3 || NETSTANDARD2_0 || NETSTANDARD2_1 || NETCOREAPP2_1 || NETCOREAPP3_0
11-
namespace System.Data.Common
12-
{
13-
public abstract class DbBatch : IDisposable
14-
{
15-
public DbBatchCommandCollection BatchCommands => DbBatchCommands;
16-
protected abstract DbBatchCommandCollection DbBatchCommands { get; }
17-
18-
#region Execution (mirrors DbCommand)
19-
20-
public DbDataReader ExecuteReader() => ExecuteDbDataReader();
21-
protected abstract DbDataReader ExecuteDbDataReader();
22-
public Task<DbDataReader> ExecuteReaderAsync(CancellationToken cancellationToken = default) => ExecuteDbDataReaderAsync(cancellationToken);
23-
protected abstract Task<DbDataReader> ExecuteDbDataReaderAsync(CancellationToken cancellationToken);
24-
25-
public abstract int ExecuteNonQuery();
26-
public abstract Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken = default);
27-
28-
public abstract object ExecuteScalar();
29-
public abstract Task<object> ExecuteScalarAsync(CancellationToken cancellationToken = default);
30-
31-
#endregion
32-
33-
#region Execution properties (mirrors DbCommand)
34-
35-
public abstract int Timeout { get; set; }
36-
37-
// Delegates to DbConnection
38-
public DbConnection Connection { get; set; }
39-
protected abstract DbConnection DbConnection { get; set; }
40-
41-
// Delegates to DbTransaction
42-
public DbTransaction Transaction { get; set; }
43-
protected abstract DbTransaction DbTransaction { get; set; }
44-
45-
#endregion
46-
47-
#region Other methods mirroring DbCommand
48-
49-
public abstract void Prepare();
50-
public abstract Task PrepareAsync(CancellationToken cancellationToken = default);
51-
public abstract void Cancel();
52-
53-
#endregion
54-
55-
#region Standard dispose pattern
56-
57-
public void Dispose()
58-
{
59-
Dispose(true);
60-
GC.SuppressFinalize(this);
61-
}
62-
63-
protected virtual void Dispose(bool disposing) { }
64-
65-
#endregion
66-
}
67-
}
68-
#endif
69-
7010
namespace MySql.Data.MySqlClient
7111
{
72-
public sealed class MySqlBatch : DbBatch, ICancellableCommand
12+
public sealed class MySqlBatch : ICancellableCommand, IDisposable
7313
{
7414
public MySqlBatch()
7515
: this(null, null)
@@ -84,31 +24,20 @@ public MySqlBatch(MySqlConnection connection = null, MySqlTransaction transactio
8424
m_commandId = ICancellableCommandExtensions.GetNextId();
8525
}
8626

87-
public new MySqlConnection Connection { get; set; }
88-
public new MySqlTransaction Transaction { get; set; }
89-
public new MySqlBatchCommandCollection BatchCommands { get; }
90-
91-
protected override DbConnection DbConnection
92-
{
93-
get => Connection;
94-
set => Connection = (MySqlConnection) value;
95-
}
96-
97-
protected override DbTransaction DbTransaction
98-
{
99-
get => Transaction;
100-
set => Transaction = (MySqlTransaction) value;
101-
}
27+
public MySqlConnection Connection { get; set; }
28+
public MySqlTransaction Transaction { get; set; }
29+
public MySqlBatchCommandCollection BatchCommands { get; }
10230

103-
protected override DbBatchCommandCollection DbBatchCommands => BatchCommands;
31+
public DbDataReader ExecuteReader() => ExecuteDbDataReader();
32+
public Task<DbDataReader> ExecuteReaderAsync(CancellationToken cancellationToken = default) => ExecuteDbDataReaderAsync(cancellationToken);
10433

105-
protected override DbDataReader ExecuteDbDataReader()
34+
private DbDataReader ExecuteDbDataReader()
10635
{
10736
((ICancellableCommand) this).ResetCommandTimeout();
10837
return ExecuteReaderAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult();
10938
}
11039

111-
protected override Task<DbDataReader> ExecuteDbDataReaderAsync(CancellationToken cancellationToken)
40+
private Task<DbDataReader> ExecuteDbDataReaderAsync(CancellationToken cancellationToken)
11241
{
11342
((ICancellableCommand) this).ResetCommandTimeout();
11443
return ExecuteReaderAsync(AsyncIOBehavior, cancellationToken);
@@ -128,17 +57,17 @@ private Task<DbDataReader> ExecuteReaderAsync(IOBehavior ioBehavior, Cancellatio
12857
return CommandExecutor.ExecuteReaderAsync(BatchCommands, payloadCreator, CommandBehavior.Default, ioBehavior, cancellationToken);
12958
}
13059

131-
public override int ExecuteNonQuery() => ExecuteNonQueryAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult();
60+
public int ExecuteNonQuery() => ExecuteNonQueryAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult();
13261

133-
public override object ExecuteScalar() => ExecuteScalarAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult();
62+
public object ExecuteScalar() => ExecuteScalarAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult();
13463

135-
public override Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken = default) => ExecuteNonQueryAsync(AsyncIOBehavior, cancellationToken);
64+
public Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken = default) => ExecuteNonQueryAsync(AsyncIOBehavior, cancellationToken);
13665

137-
public override Task<object> ExecuteScalarAsync(CancellationToken cancellationToken = default) => ExecuteScalarAsync(AsyncIOBehavior, cancellationToken);
66+
public Task<object> ExecuteScalarAsync(CancellationToken cancellationToken = default) => ExecuteScalarAsync(AsyncIOBehavior, cancellationToken);
13867

139-
public override int Timeout { get; set; }
68+
public int Timeout { get; set; }
14069

141-
public override void Prepare()
70+
public void Prepare()
14271
{
14372
if (!NeedsPrepare(out var exception))
14473
{
@@ -150,20 +79,13 @@ public override void Prepare()
15079
DoPrepareAsync(IOBehavior.Synchronous, default).GetAwaiter().GetResult();
15180
}
15281

153-
public override Task PrepareAsync(CancellationToken cancellationToken = default) => PrepareAsync(AsyncIOBehavior, cancellationToken);
82+
public Task PrepareAsync(CancellationToken cancellationToken = default) => PrepareAsync(AsyncIOBehavior, cancellationToken);
15483

155-
public override void Cancel() => Connection?.Cancel(this);
84+
public void Cancel() => Connection?.Cancel(this);
15685

157-
protected override void Dispose(bool disposing)
86+
public void Dispose()
15887
{
159-
try
160-
{
161-
m_isDisposed = true;
162-
}
163-
finally
164-
{
165-
base.Dispose(disposing);
166-
}
88+
m_isDisposed = true;
16789
}
16890

16991
int ICancellableCommand.CommandId => m_commandId;

src/MySqlConnector/MySql.Data.MySqlClient/MySqlBatchCommand.cs

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,9 @@
11
using System.Data;
2-
using System.Data.Common;
32
using MySqlConnector.Core;
43

5-
#if NET45 || NET461 || NET471 || NETSTANDARD1_3 || NETSTANDARD2_0 || NETSTANDARD2_1 || NETCOREAPP2_1 || NETCOREAPP3_0
6-
namespace System.Data.Common
7-
{
8-
public abstract class DbBatchCommand
9-
{
10-
public abstract string CommandText { get; set; }
11-
public abstract CommandType CommandType { get; set; }
12-
public abstract CommandBehavior CommandBehavior { get; set; }
13-
public abstract int RecordsAffected { get; set; }
14-
15-
public DbParameterCollection Parameters => DbParameterCollection;
16-
protected abstract DbParameterCollection DbParameterCollection { get; }
17-
}
18-
}
19-
#endif
20-
214
namespace MySql.Data.MySqlClient
225
{
23-
public sealed class MySqlBatchCommand : DbBatchCommand, IMySqlCommand
6+
public sealed class MySqlBatchCommand : IMySqlCommand
247
{
258
public MySqlBatchCommand()
269
: this(null)
@@ -33,13 +16,12 @@ public MySqlBatchCommand(string commandText)
3316
CommandType = CommandType.Text;
3417
}
3518

36-
public override string CommandText { get; set; }
37-
public override CommandType CommandType { get; set; }
38-
public override CommandBehavior CommandBehavior { get; set; }
39-
public override int RecordsAffected { get; set; }
40-
protected override DbParameterCollection DbParameterCollection => Parameters;
19+
public string CommandText { get; set; }
20+
public CommandType CommandType { get; set; }
21+
public CommandBehavior CommandBehavior { get; set; }
22+
public int RecordsAffected { get; set; }
4123

42-
public new MySqlParameterCollection Parameters
24+
public MySqlParameterCollection Parameters
4325
{
4426
get
4527
{

src/MySqlConnector/MySql.Data.MySqlClient/MySqlBatchCommandCollection.cs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
using System.Collections.Generic;
22
using System.Collections.ObjectModel;
3-
using System.Data.Common;
43
using MySqlConnector.Core;
54

6-
#if NET45 || NET461 || NET471 || NETSTANDARD1_3 || NETSTANDARD2_0 || NETSTANDARD2_1 || NETCOREAPP2_1 || NETCOREAPP3_0
7-
namespace System.Data.Common
8-
{
9-
public abstract class DbBatchCommandCollection : Collection<DbBatchCommand>
10-
{
11-
}
12-
}
13-
#endif
14-
155
namespace MySql.Data.MySqlClient
166
{
17-
public sealed class MySqlBatchCommandCollection : DbBatchCommandCollection, IReadOnlyList<IMySqlCommand>
7+
public sealed class MySqlBatchCommandCollection : Collection<MySqlBatchCommand>, IReadOnlyList<IMySqlCommand>
188
{
199
public new MySqlBatchCommand this[int index]
2010
{

src/MySqlConnector/MySql.Data.MySqlClient/MySqlClientFactory.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public sealed class MySqlClientFactory : DbProviderFactory
1616
public override DbDataAdapter CreateDataAdapter() => new MySqlDataAdapter();
1717
#endif
1818

19-
public DbBatch CreateBatch() => new MySqlBatch();
20-
public DbBatchCommand CreateBatchCommand() => new MySqlBatchCommand();
19+
public MySqlBatch CreateBatch() => new MySqlBatch();
20+
public MySqlBatchCommand CreateBatchCommand() => new MySqlBatchCommand();
2121
public bool CanCreateBatch => true;
2222

2323
private MySqlClientFactory()

0 commit comments

Comments
 (0)