Skip to content

Commit 0da24c2

Browse files
author
jaguzman
committed
Allowed the ado.net context to properly read a connection string from the config file
1 parent a9a4179 commit 0da24c2

File tree

2 files changed

+21
-73
lines changed

2 files changed

+21
-73
lines changed

src/DotNetToolkit.Repository.AdoNet/DbHelper.cs

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,12 @@ public sealed class DbHelper : IDisposable
3232
private readonly string _connectionString;
3333
private DbConnection _connection;
3434
private readonly bool _ownsConnection;
35-
private readonly Internal.DataAccessProviderType _providerType;
3635
private readonly IRepositoryConventions _conventions;
3736

3837
#endregion
3938

4039
#region Properties
4140

42-
/// <summary>
43-
/// Gets the provider type.
44-
/// </summary>
45-
internal Internal.DataAccessProviderType ProviderType { get { return _providerType; } }
46-
4741
/// <summary>
4842
/// Gets the provider factory.
4943
/// </summary>
@@ -88,13 +82,14 @@ internal DbHelper(IRepositoryConventions conventions, string nameOrConnectionStr
8882
Guard.NotNull(conventions, nameof(conventions));
8983
Guard.NotEmpty(nameOrConnectionString, nameof(nameOrConnectionString));
9084

91-
var css = GetConnectionStringSettings(nameOrConnectionString);
85+
var css = Guard.EnsureNotNull(
86+
GetConnectionStringSettings(nameOrConnectionString),
87+
"The connection string does not exist in your configuration file.");
9288

9389
_conventions = conventions;
9490
_factory = Internal.DbProviderFactories.GetFactory(css.ProviderName);
9591
_connectionString = css.ConnectionString;
9692
_ownsConnection = true;
97-
_providerType = Internal.DataAccessProvider.GetProviderType(css.ProviderName);
9893
}
9994

10095
/// <summary>
@@ -113,7 +108,6 @@ internal DbHelper(IRepositoryConventions conventions, string providerName, strin
113108
_factory = Internal.DbProviderFactories.GetFactory(providerName);
114109
_connectionString = connectionString;
115110
_ownsConnection = true;
116-
_providerType = Internal.DataAccessProvider.GetProviderType(providerName);
117111
}
118112

119113
/// <summary>
@@ -126,16 +120,9 @@ internal DbHelper(IRepositoryConventions conventions, DbConnection existingConne
126120
Guard.NotNull(conventions, nameof(conventions));
127121
Guard.NotNull(existingConnection, nameof(existingConnection));
128122

129-
if (existingConnection.State == ConnectionState.Closed)
130-
existingConnection.Open();
131-
132123
_conventions = conventions;
133124
_connection = existingConnection;
134125
_ownsConnection = false;
135-
136-
var css = GetConnectionStringSettings(existingConnection.ConnectionString);
137-
138-
_providerType = Internal.DataAccessProvider.GetProviderType(css.ProviderName);
139126
}
140127

141128
#endregion
@@ -1305,21 +1292,18 @@ private static ConnectionStringSettings GetConnectionStringSettings(string nameO
13051292
{
13061293
var css = ConfigurationManager.ConnectionStrings[nameOrConnectionString];
13071294

1308-
if (css == null)
1295+
if (css != null)
1296+
return css;
1297+
1298+
for (var i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++)
13091299
{
1310-
for (var i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++)
1311-
{
1312-
css = ConfigurationManager.ConnectionStrings[i];
1300+
css = ConfigurationManager.ConnectionStrings[i];
13131301

1314-
if (css.ConnectionString.Equals(nameOrConnectionString))
1315-
break;
1316-
}
1302+
if (css.ConnectionString.Equals(nameOrConnectionString))
1303+
return css;
13171304
}
13181305

1319-
if (css == null)
1320-
throw new ArgumentException("The connection string does not exist in your configuration file.");
1321-
1322-
return css;
1306+
return null;
13231307
}
13241308

13251309
private static T ConvertValue<T>(object value)

src/DotNetToolkit.Repository.AdoNet/Internal/AdoNetRepositoryContext.cs

Lines changed: 10 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,6 @@ private void PrepareEntitySetQuery(EntitySet entitySet, bool existInDb, out stri
161161

162162
QueryBuilder.CreateInsertStatement(Conventions, entitySet.Entity, out sql, out parameters);
163163

164-
var canGetScopeIdentity = true;
165-
166-
#if NETFULL
167-
if (_dbHelper.ProviderType == DataAccessProviderType.SqlServerCompact)
168-
canGetScopeIdentity = false;
169-
#endif
170-
171-
if (canGetScopeIdentity)
172-
sql += $"{Environment.NewLine}SELECT SCOPE_IDENTITY()";
173-
174164
break;
175165
}
176166
case EntityState.Removed:
@@ -353,30 +343,17 @@ public int SaveChanges()
353343
command.Parameters.Clear();
354344
command.AddParameters(parameters);
355345

346+
rows += _dbHelper.ExecuteNonQuery(command);
347+
356348
if (entitySet.State == EntityState.Added && isIdentity)
357349
{
358-
#if NETFULL
359-
if (_dbHelper.ProviderType == DataAccessProviderType.SqlServerCompact)
360-
{
361-
_dbHelper.ExecuteNonQuery(command);
362-
363-
sql = "SELECT @@IDENTITY";
364-
parameters.Clear();
365-
366-
command.CommandText = sql;
367-
command.Parameters.Clear();
368-
}
369-
#endif
350+
command.CommandText = "SELECT @@IDENTITY";
351+
command.Parameters.Clear();
352+
370353
var newKey = _dbHelper.ExecuteScalar<object>(command);
371354
var convertedKeyValue = Convert.ChangeType(newKey, primaryKeyPropertyInfo.PropertyType);
372355

373356
primaryKeyPropertyInfo.SetValue(entitySet.Entity, convertedKeyValue, null);
374-
375-
rows++;
376-
}
377-
else
378-
{
379-
rows += _dbHelper.ExecuteNonQuery(command);
380357
}
381358
}
382359
}
@@ -714,30 +691,17 @@ public IPagedQueryResult<IEnumerable<TResult>> GroupBy<TEntity, TGroupKey, TResu
714691
command.Parameters.Clear();
715692
command.AddParameters(parameters);
716693

694+
rows += await _dbHelper.ExecuteNonQueryAsync(command, cancellationToken);
695+
717696
if (entitySet.State == EntityState.Added && isIdentity)
718697
{
719-
#if NETFULL
720-
if (_dbHelper.ProviderType == DataAccessProviderType.SqlServerCompact)
721-
{
722-
await _dbHelper.ExecuteNonQueryAsync(command, cancellationToken);
723-
724-
sql = "SELECT @@IDENTITY";
725-
parameters.Clear();
726-
727-
command.CommandText = sql;
728-
command.Parameters.Clear();
729-
}
730-
#endif
698+
command.CommandText = "SELECT @@IDENTITY";
699+
command.Parameters.Clear();
700+
731701
var newKey = await _dbHelper.ExecuteScalarAsync<object>(command, cancellationToken);
732702
var convertedKeyValue = Convert.ChangeType(newKey, primaryKeyPropertyInfo.PropertyType);
733703

734704
primaryKeyPropertyInfo.SetValue(entitySet.Entity, convertedKeyValue, null);
735-
736-
rows++;
737-
}
738-
else
739-
{
740-
rows += await _dbHelper.ExecuteNonQueryAsync(command, cancellationToken);
741705
}
742706
}
743707
}

0 commit comments

Comments
 (0)