Skip to content

Commit 97ade4d

Browse files
add nullable annotation
1 parent 9289b35 commit 97ade4d

23 files changed

+125
-106
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<TargetFramework>net9.0</TargetFramework>
55
<ImplicitUsings>disable</ImplicitUsings>
6-
<Nullable>disable</Nullable>
6+
<Nullable>enable</Nullable>
77
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
88

99
<Authors>FizzCode Ltd.</Authors>

LightWeight.AdoNet.DbConnection/ConnectionString/ConnectionStringCollection.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public class ConnectionStringCollection
55
private readonly Dictionary<string, INamedConnectionString> _connectionStrings = new(StringComparer.InvariantCultureIgnoreCase);
66
public IEnumerable<INamedConnectionString> All => _connectionStrings.Values;
77

8-
public void LoadFromConfiguration(IConfiguration configuration, string sectionKey = "ConnectionStrings", IConfigurationSecretProtector secretProtector = null)
8+
public void LoadFromConfiguration(IConfiguration configuration, string sectionKey = "ConnectionStrings", IConfigurationSecretProtector? secretProtector = null)
99
{
1010
var children = configuration
1111
.GetSection(sectionKey)
@@ -16,9 +16,12 @@ public void LoadFromConfiguration(IConfiguration configuration, string sectionKe
1616
var name = child.Key;
1717
var providerName = ConfigurationReader.GetCurrentValue(configuration, child.Path, "ProviderName", null, secretProtector);
1818
var connectionString = ConfigurationReader.GetCurrentValue(configuration, child.Path, "ConnectionString", null, secretProtector);
19-
var version = ConfigurationReader.GetCurrentValue(configuration, child.Path, "Version", null, secretProtector);
20-
var namedConnectionString = NamedConnectionStringFactory.Create(name, providerName, connectionString, version);
21-
Add(namedConnectionString);
19+
if (providerName != null && connectionString != null)
20+
{
21+
var version = ConfigurationReader.GetCurrentValue(configuration, child.Path, "Version", null, secretProtector);
22+
var namedConnectionString = NamedConnectionStringFactory.Create(name, providerName, connectionString, version);
23+
Add(namedConnectionString);
24+
}
2225
}
2326
}
2427

@@ -27,12 +30,12 @@ public void Add(INamedConnectionString connectionString)
2730
_connectionStrings[connectionString.Name] = connectionString;
2831
}
2932

30-
public INamedConnectionString this[string name]
33+
public INamedConnectionString? this[string name]
3134
{
3235
get
3336
{
3437
_connectionStrings.TryGetValue(name, out var value);
3538
return value;
3639
}
3740
}
38-
}
41+
}

LightWeight.AdoNet.DbConnection/ConnectionString/IAdoNetConnectionStringHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public interface IAdoNetConnectionStringHelper
66
AdoNetEngine Engine { get; }
77
AdoNetConnectionStringFields GetKnownConnectionStringFields(GenericNamedConnectionString connectionString);
88
bool IsEscaped(string identifier);
9-
string Escape(string dbObject, string schema = null);
9+
string Escape(string dbObject, string? schema = null);
1010
string EscapeIdentifier(string identifier);
1111
string Unescape(string identifier);
1212

LightWeight.AdoNet.DbConnection/DatabaseConnection/AdoNetSqlConnectionManager.cs

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public delegate void OnAdoNetSqlConnectionOpening(IAdoNetSqlConnectionString connectionString, IDbConnection connection);
44
public delegate void OnAdoNetSqlConnectionOpened(IAdoNetSqlConnectionString connectionString, IDbConnection connection, int retryCount);
5-
public delegate void OnAdoNetSqlConnectionOpenError(IAdoNetSqlConnectionString connectionString, IDbConnection connection, int retryCount, Exception ex);
5+
public delegate void OnAdoNetSqlConnectionOpenError(IAdoNetSqlConnectionString connectionString, IDbConnection? connection, int retryCount, Exception ex);
66

77
public delegate void OnAdoNetSqlConnectionClosing(DatabaseConnection connection);
88
public delegate void OnAdoNetSqlConnectionClosed(DatabaseConnection connection);
@@ -14,17 +14,17 @@ public class AdoNetSqlConnectionManager
1414

1515
private readonly Dictionary<string, DatabaseConnection> _connections = [];
1616

17-
public DisposableDatabaseConnection GetDisposableConnection(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening onOpening = null, OnAdoNetSqlConnectionOpened onOpened = null, OnAdoNetSqlConnectionOpenError onError = null)
17+
public DisposableDatabaseConnection? GetDisposableConnection(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening? onOpening = null, OnAdoNetSqlConnectionOpened? onOpened = null, OnAdoNetSqlConnectionOpenError? onError = null)
1818
{
1919
return GetConnection<DisposableDatabaseConnection>(connectionString, maxRetryCount, retryDelayMilliseconds, onOpening, onOpened, onError);
2020
}
2121

22-
public DatabaseConnection GetConnection(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening onOpening = null, OnAdoNetSqlConnectionOpened onOpened = null, OnAdoNetSqlConnectionOpenError onError = null)
22+
public DatabaseConnection? GetConnection(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening? onOpening = null, OnAdoNetSqlConnectionOpened? onOpened = null, OnAdoNetSqlConnectionOpenError? onError = null)
2323
{
2424
return GetConnection<DatabaseConnection>(connectionString, maxRetryCount, retryDelayMilliseconds, onOpening, onOpened, onError);
2525
}
2626

27-
public T GetConnection<T>(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening onOpening = null, OnAdoNetSqlConnectionOpened onOpened = null, OnAdoNetSqlConnectionOpenError onError = null)
27+
public T? GetConnection<T>(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening? onOpening = null, OnAdoNetSqlConnectionOpened? onOpened = null, OnAdoNetSqlConnectionOpenError? onError = null)
2828
where T : DatabaseConnection, new()
2929
{
3030
var key = connectionString.Name;
@@ -47,7 +47,7 @@ public T GetConnection<T>(IAdoNetSqlConnectionString connectionString, int maxRe
4747
key += "-";
4848
}
4949

50-
List<Exception> exceptions = null;
50+
List<Exception>? exceptions = null;
5151

5252
for (var retry = 0; retry <= maxRetryCount; retry++)
5353
{
@@ -61,7 +61,7 @@ public T GetConnection<T>(IAdoNetSqlConnectionString connectionString, int maxRe
6161

6262
try
6363
{
64-
IDbConnection conn = null;
64+
IDbConnection? conn = null;
6565

6666
var connectionType = Type.GetType(connectionString.ProviderName);
6767
if (connectionType != null)
@@ -80,9 +80,12 @@ public T GetConnection<T>(IAdoNetSqlConnectionString connectionString, int maxRe
8080
}
8181
catch (Exception ex)
8282
{
83-
onError?.Invoke(connectionString, conn, retry, ex);
83+
onError?.Invoke(connectionString, null, retry, ex);
8484
throw;
8585
}
86+
87+
if (conn == null)
88+
return null;
8689
}
8790

8891
conn.ConnectionString = connectionString.ConnectionString;
@@ -132,15 +135,15 @@ public T GetConnection<T>(IAdoNetSqlConnectionString connectionString, int maxRe
132135
return null;
133136
}
134137

135-
public DatabaseConnection GetNewConnection(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening onOpening = null, OnAdoNetSqlConnectionOpened onOpened = null, OnAdoNetSqlConnectionOpenError onError = null)
138+
public DatabaseConnection? GetNewConnection(IAdoNetSqlConnectionString connectionString, int maxRetryCount = 5, int retryDelayMilliseconds = 2000, OnAdoNetSqlConnectionOpening? onOpening = null, OnAdoNetSqlConnectionOpened? onOpened = null, OnAdoNetSqlConnectionOpenError? onError = null)
136139
{
137-
Exception lastException = null;
140+
Exception? lastException = null;
138141

139142
for (var retry = 0; retry <= maxRetryCount; retry++)
140143
{
141144
try
142145
{
143-
IDbConnection conn = null;
146+
IDbConnection? conn = null;
144147

145148
var connectionType = Type.GetType(connectionString.ProviderName);
146149
if (connectionType != null)
@@ -162,6 +165,9 @@ public DatabaseConnection GetNewConnection(IAdoNetSqlConnectionString connection
162165
onError?.Invoke(connectionString, conn, retry, ex);
163166
throw;
164167
}
168+
169+
if (conn == null)
170+
return null;
165171
}
166172

167173
conn.ConnectionString = connectionString.ConnectionString;
@@ -203,7 +209,7 @@ public DatabaseConnection GetNewConnection(IAdoNetSqlConnectionString connection
203209
return null;
204210
}
205211

206-
private string GetTransactionIdentifierString(Transaction transaction)
212+
private string? GetTransactionIdentifierString(Transaction? transaction)
207213
{
208214
if (transaction == null)
209215
return null;
@@ -241,11 +247,8 @@ public void ConnectionFailed(DatabaseConnection connection)
241247
}
242248
}
243249

244-
public void ReleaseConnection(DatabaseConnection connection, OnAdoNetSqlConnectionClosing onClosing = null, OnAdoNetSqlConnectionClosed onClosed = null, OnAdoNetSqlConnectionCloseError onError = null)
250+
public void ReleaseConnection(DatabaseConnection connection, OnAdoNetSqlConnectionClosing? onClosing = null, OnAdoNetSqlConnectionClosed? onClosed = null, OnAdoNetSqlConnectionCloseError? onError = null)
245251
{
246-
if (connection == null)
247-
return;
248-
249252
lock (_connections)
250253
{
251254
connection.ReferenceCount--;
@@ -275,7 +278,7 @@ public void ReleaseConnection(DatabaseConnection connection, OnAdoNetSqlConnecti
275278

276279
public void TestConnection(IAdoNetSqlConnectionString connectionString)
277280
{
278-
IDbConnection conn = null;
281+
IDbConnection? conn = null;
279282

280283
var connectionType = Type.GetType(connectionString.ProviderName);
281284
if (connectionType != null)
@@ -285,10 +288,13 @@ public void TestConnection(IAdoNetSqlConnectionString connectionString)
285288

286289
conn ??= DbProviderFactories.GetFactory(connectionString.ProviderName).CreateConnection();
287290

288-
conn.ConnectionString = connectionString.ConnectionString;
289-
conn.Open();
291+
if (conn != null)
292+
{
293+
conn.ConnectionString = connectionString.ConnectionString;
294+
conn.Open();
290295

291-
conn.Close();
292-
conn.Dispose();
296+
conn.Close();
297+
conn.Dispose();
298+
}
293299
}
294-
}
300+
}

LightWeight.AdoNet.DbConnection/DatabaseConnection/DatabaseConnection.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
public class DatabaseConnection
44
{
5-
public AdoNetSqlConnectionManager Manager { get; internal init; }
6-
public string Key { get; internal init; }
7-
public IAdoNetSqlConnectionString ConnectionString { get; internal init; }
8-
public IDbConnection Connection { get; internal init; }
9-
public Transaction TransactionWhenCreated { get; internal init; }
5+
public AdoNetSqlConnectionManager Manager { get; init; } = null!;
6+
public string? Key { get; init; }
7+
public IAdoNetSqlConnectionString ConnectionString { get; init; } = null!;
8+
public IDbConnection Connection { get; init; } = null!;
9+
public Transaction? TransactionWhenCreated { get; init; }
1010
public object Lock { get; } = new object();
1111

1212
public int ReferenceCount { get; internal set; }

LightWeight.AdoNet.DbConnection/UnitOfWork/TransactionScopeUnitOfWork.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protected virtual void Dispose(bool disposing)
2626
_scope.Dispose();
2727
}
2828

29-
_scope = null;
29+
_scope = null!;
3030
_disposed = true;
3131
}
3232
}
@@ -36,4 +36,4 @@ public void Dispose()
3636
Dispose(true);
3737
GC.SuppressFinalize(this);
3838
}
39-
}
39+
}

LightWeight.Configuration/ConfigurationReader.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22

33
public static class ConfigurationReader
44
{
5-
public static T GetCurrentValue<T>(IConfiguration configuration, string section, string key, T defaultValue)
5+
public static T? GetCurrentValue<T>(IConfiguration configuration, string section, string key, T? defaultValue)
66
{
7-
var value = configuration.GetValue<T>(section + ":" + key + "-" + Environment.MachineName, default);
7+
var value = configuration.GetValue<T>(section + ":" + key + "-" + Environment.MachineName);
88
if (value != null && !value.Equals(default(T)))
99
return value;
1010

1111
return configuration.GetValue(section + ":" + key, defaultValue);
1212
}
1313

14-
public static string GetCurrentValue(IConfiguration configuration, string section, string key, string defaultValue, IConfigurationSecretProtector protector = null)
14+
public static string? GetCurrentValue(IConfiguration configuration, string section, string key, string? defaultValue, IConfigurationSecretProtector? protector = null)
1515
{
1616
var isProtected = configuration.GetValue(section + ":" + key + "-protected", false);
1717

18-
var value = configuration.GetValue<string>(section + ":" + key + "-" + Environment.MachineName, default);
18+
var value = configuration.GetValue<string>(section + ":" + key + "-" + Environment.MachineName);
1919
if (value != null)
2020
{
2121
if (isProtected && protector != null)
@@ -35,20 +35,20 @@ public static string GetCurrentValue(IConfiguration configuration, string sectio
3535
return value;
3636
}
3737

38-
public static T GetCurrentValue<T>(IConfigurationSection section, string key, T defaultValue)
38+
public static T? GetCurrentValue<T>(IConfigurationSection section, string key, T? defaultValue)
3939
{
40-
var value = section.GetValue<T>(key + "-" + Environment.MachineName, default);
40+
var value = section.GetValue<T>(key + "-" + Environment.MachineName);
4141
if (value != null && !value.Equals(default(T)))
4242
return value;
4343

4444
return section.GetValue(key, defaultValue);
4545
}
4646

47-
public static string GetCurrentValue(IConfigurationSection section, string key, string defaultValue, IConfigurationSecretProtector protector = null)
47+
public static string? GetCurrentValue(IConfigurationSection section, string key, string defaultValue, IConfigurationSecretProtector? protector = null)
4848
{
4949
var isProtected = section.GetValue(key + "-protected", false);
5050

51-
var value = section.GetValue<string>(key + "-" + Environment.MachineName, default);
51+
var value = section.GetValue<string>(key + "-" + Environment.MachineName);
5252
if (value != null)
5353
{
5454
if (isProtected && protector != null)

LightWeight/ConnectionString/AdoNetConnectionStringFields.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
public class AdoNetConnectionStringFields
44
{
5-
public string Server { get; internal set; }
5+
public string? Server { get; internal set; }
66
public int? Port { get; internal set; }
7-
public string Database { get; internal set; }
8-
public string UserId { get; internal set; }
7+
public string? Database { get; internal set; }
8+
public string? UserId { get; internal set; }
99
public bool? IntegratedSecurity { get; internal set; }
1010
public bool? Encrypt { get; internal set; }
1111
}

LightWeight/ConnectionString/IAdoNetSqlConnectionString.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
public interface IAdoNetSqlConnectionString : INamedConnectionString
44
{
55
public AdoNetEngine SqlEngine { get; }
6-
public AdoNetConnectionStringFields Fields { get; }
6+
public AdoNetConnectionStringFields? Fields { get; }
77

88
public bool IsEscaped(string identifier);
9-
public string Escape(string dbObject, string schema = null);
9+
public string Escape(string dbObject, string? schema = null);
1010
string EscapeIdentifier(string identifier);
1111
public string Unescape(string identifier);
1212

LightWeight/ConnectionString/INamedConnectionString.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ public interface INamedConnectionString
55
public string Name { get; }
66
public string ConnectionString { get; }
77
public string ProviderName { get; }
8-
public string Version { get; }
8+
public string? Version { get; }
99
}

0 commit comments

Comments
 (0)