Skip to content

Commit dec9dc1

Browse files
committed
Stop using DbContextConfiguration to get ILoggerFactory
This is part of Issue #641 which is about cleaning up the use of DbContextConfiguration. DbContextConfiguration is intended to help resolve dynamic services--that is, services for which the actual type/instance of service to use depends on the current context configuration. However, it has gradually spread throughout the code as a general purpose service locator. This causes dependencies to be hidden and creates a lot of coupling to DbContextConfiguration throughout the code, so I am making a set of changes to help fix this. This change makes things that need and ILoggerFactory depend on it in the normal way rather than getting one from DbContextConfiguration.
1 parent 9cc170a commit dec9dc1

File tree

47 files changed

+183
-182
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+183
-182
lines changed

src/EntityFramework.AzureTableStorage/AtsConnection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ protected AtsConnection()
2828
{
2929
}
3030

31-
public AtsConnection([NotNull] DbContextConfiguration configuration)
32-
: base(configuration.LoggerFactory)
31+
public AtsConnection([NotNull] DbContextConfiguration configuration, [NotNull] ILoggerFactory loggerFactory)
32+
: base(loggerFactory)
3333
{
3434
Check.NotNull(configuration, "configuration");
3535

src/EntityFramework.AzureTableStorage/AtsDataStore.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.Data.Entity.Infrastructure;
1717
using Microsoft.Data.Entity.Storage;
1818
using Microsoft.Data.Entity.Update;
19+
using Microsoft.Framework.Logging;
1920
using Microsoft.WindowsAzure.Storage;
2021
using Microsoft.WindowsAzure.Storage.Table;
2122
using Remotion.Linq;
@@ -33,7 +34,11 @@ public class AtsDataStore : DataStore
3334
/// <summary>
3435
/// Provided only for testing purposes. Do not use.
3536
/// </summary>
36-
protected AtsDataStore(DbContextConfiguration configuration, AtsConnection connection, TableEntityAdapterFactory entityFactory)
37+
protected AtsDataStore(
38+
DbContextConfiguration configuration,
39+
AtsConnection connection,
40+
TableEntityAdapterFactory entityFactory)
41+
: base(configuration, new LoggerFactory())
3742
{
3843
_configuration = configuration;
3944
Connection = connection;
@@ -43,8 +48,9 @@ protected AtsDataStore(DbContextConfiguration configuration, AtsConnection conne
4348
public AtsDataStore([NotNull] DbContextConfiguration configuration,
4449
[NotNull] AtsConnection connection,
4550
[NotNull] AtsQueryFactory queryFactory,
46-
[NotNull] TableEntityAdapterFactory tableEntityFactory)
47-
: base(configuration)
51+
[NotNull] TableEntityAdapterFactory tableEntityFactory,
52+
[NotNull] ILoggerFactory loggerFactory)
53+
: base(configuration, loggerFactory)
4854
{
4955
Check.NotNull(connection, "connection");
5056
Check.NotNull(queryFactory, "queryFactory");

src/EntityFramework.AzureTableStorage/AtsDatabase.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33

44
using JetBrains.Annotations;
55
using Microsoft.Data.Entity.Infrastructure;
6+
using Microsoft.Framework.Logging;
67

78
namespace Microsoft.Data.Entity.AzureTableStorage
89
{
910
public class AtsDatabase : Database
1011
{
11-
public AtsDatabase([NotNull] DbContextConfiguration configuration)
12-
: base(configuration)
12+
public AtsDatabase([NotNull] DbContextConfiguration configuration, [NotNull] ILoggerFactory loggerFactory)
13+
: base(configuration, loggerFactory)
1314
{
1415
}
1516

src/EntityFramework.Commands/MigrationTool.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ private DbContext CreateContext(Type type)
175175
{
176176
var context = ContextTool.CreateContext(type);
177177

178-
context.Configuration.LoggerFactory.AddProvider(_loggerProvider);
178+
// TODO: Decouple from DbContextConfiguration (Issue #641)
179+
var loggerFactory = (ILoggerFactory)context.Configuration.Services.ServiceProvider.GetService(typeof(ILoggerFactory));
180+
loggerFactory.AddProvider(_loggerProvider);
179181

180182
var extension = RelationalOptionsExtension.Extract(context.Configuration);
181183
if (extension.MigrationAssembly == null)

src/EntityFramework.InMemory/InMemoryDataStore.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using Microsoft.Data.Entity.Metadata;
1515
using Microsoft.Data.Entity.Storage;
1616
using Microsoft.Data.Entity.Utilities;
17+
using Microsoft.Framework.Logging;
1718
using Remotion.Linq;
1819

1920
namespace Microsoft.Data.Entity.InMemory
@@ -34,8 +35,9 @@ protected InMemoryDataStore()
3435

3536
public InMemoryDataStore(
3637
[NotNull] DbContextConfiguration configuration,
37-
[NotNull] InMemoryDatabase persistentDatabase)
38-
: base(configuration)
38+
[NotNull] InMemoryDatabase persistentDatabase,
39+
[NotNull] ILoggerFactory loggerFactory)
40+
: base(configuration, loggerFactory)
3941
{
4042
Check.NotNull(configuration, "configuration");
4143
Check.NotNull(persistentDatabase, "persistentDatabase");
@@ -49,7 +51,7 @@ public InMemoryDataStore(
4951
_database = new ThreadSafeLazyRef<InMemoryDatabase>(
5052
() => _persist
5153
? persistentDatabase
52-
: new InMemoryDatabase(configuration.LoggerFactory));
54+
: new InMemoryDatabase(loggerFactory));
5355
}
5456

5557
public virtual InMemoryDatabase Database

src/EntityFramework.Migrations/Infrastructure/Migrator.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ public Migrator(
4444
[NotNull] ModelDiffer modelDiffer,
4545
[NotNull] IMigrationOperationSqlGeneratorFactory ddlSqlGeneratorFactory,
4646
[NotNull] SqlGenerator dmlSqlGenerator,
47-
[NotNull] SqlStatementExecutor sqlExecutor)
47+
[NotNull] SqlStatementExecutor sqlExecutor,
48+
[NotNull] ILoggerFactory loggerFactory)
4849
{
4950
Check.NotNull(contextConfiguration, "contextConfiguration");
5051
Check.NotNull(historyRepository, "historyRepository");
@@ -53,6 +54,7 @@ public Migrator(
5354
Check.NotNull(ddlSqlGeneratorFactory, "ddlSqlGeneratorFactory");
5455
Check.NotNull(dmlSqlGenerator, "dmlSqlGenerator");
5556
Check.NotNull(sqlExecutor, "sqlExecutor");
57+
Check.NotNull(loggerFactory, "loggerFactory");
5658

5759
_contextConfiguration = contextConfiguration;
5860
_historyRepository = historyRepository;
@@ -61,7 +63,7 @@ public Migrator(
6163
_ddlSqlGeneratorFactory = ddlSqlGeneratorFactory;
6264
_dmlSqlGenerator = dmlSqlGenerator;
6365
_sqlExecutor = sqlExecutor;
64-
_logger = new LazyRef<ILogger>(() => ContextConfiguration.LoggerFactory.Create<Migrator>());
66+
_logger = new LazyRef<ILogger>(loggerFactory.Create<Migrator>);
6567
}
6668

6769
protected virtual DbContextConfiguration ContextConfiguration

src/EntityFramework.Redis/RedisConnection.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using Microsoft.Data.Entity.Infrastructure;
66
using Microsoft.Data.Entity.Redis.Utilities;
77
using Microsoft.Data.Entity.Storage;
8+
using Microsoft.Framework.Logging;
89

910
namespace Microsoft.Data.Entity.Redis
1011
{
@@ -20,10 +21,11 @@ protected RedisConnection()
2021
{
2122
}
2223

23-
public RedisConnection([NotNull] DbContextConfiguration configuration)
24-
: base(configuration.LoggerFactory)
24+
public RedisConnection([NotNull] DbContextConfiguration configuration, [NotNull] ILoggerFactory loggerFactory)
25+
: base(loggerFactory)
2526
{
2627
Check.NotNull(configuration, "configuration");
28+
2729
var optionsExtension = RedisOptionsExtension.Extract(configuration);
2830

2931
_connectionString = optionsExtension.HostName + ":" + optionsExtension.Port;

src/EntityFramework.Redis/RedisDataStore.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Microsoft.Data.Entity.Redis.Utilities;
1313
using Microsoft.Data.Entity.Storage;
1414
using Microsoft.Data.Entity.Utilities;
15+
using Microsoft.Framework.Logging;
1516
using Remotion.Linq;
1617

1718
namespace Microsoft.Data.Entity.Redis
@@ -20,8 +21,10 @@ public class RedisDataStore : DataStore
2021
{
2122
private readonly LazyRef<RedisDatabase> _database;
2223

23-
public RedisDataStore([NotNull] DbContextConfiguration configuration)
24-
: base(configuration)
24+
public RedisDataStore(
25+
[NotNull] DbContextConfiguration configuration,
26+
[NotNull] ILoggerFactory loggerFactory)
27+
: base(configuration, loggerFactory)
2528
{
2629
_database = new LazyRef<RedisDatabase>(() => (RedisDatabase)configuration.Database);
2730
}

src/EntityFramework.Redis/RedisDatabase.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.Data.Entity.Metadata;
1616
using Microsoft.Data.Entity.Redis.Query;
1717
using Microsoft.Data.Entity.Redis.Utilities;
18+
using Microsoft.Framework.Logging;
1819
using StackExchange.Redis;
1920

2021
namespace Microsoft.Data.Entity.Redis
@@ -51,8 +52,8 @@ public class RedisDatabase : Database
5152
private static readonly ConcurrentDictionary<string, ConnectionMultiplexer> _connectionMultiplexers
5253
= new ConcurrentDictionary<string, ConnectionMultiplexer>(); // key = ConfigurationOptions.ToString()
5354

54-
public RedisDatabase([NotNull] DbContextConfiguration configuration)
55-
: base(configuration)
55+
public RedisDatabase([NotNull] DbContextConfiguration configuration, [NotNull] ILoggerFactory loggerFactory)
56+
: base(configuration, loggerFactory)
5657
{
5758
}
5859

src/EntityFramework.Relational/RelationalConnection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ protected RelationalConnection()
3131
{
3232
}
3333

34-
protected RelationalConnection([NotNull] DbContextConfiguration configuration)
35-
: base(configuration.LoggerFactory)
34+
protected RelationalConnection([NotNull] DbContextConfiguration configuration, [NotNull] ILoggerFactory loggerFactory)
35+
: base(loggerFactory)
3636
{
3737
Check.NotNull(configuration, "configuration");
3838

0 commit comments

Comments
 (0)