Autofac registrations are not singleton anymore.

This commit is contained in:
kay.one 2013-03-30 15:14:33 -07:00
parent 3cdff3bb71
commit f2886d89de
5 changed files with 34 additions and 23 deletions

View File

@ -22,12 +22,10 @@ namespace NzbDrone.Common
}
containerBuilder.RegisterAssemblyTypes(apiAssembly)
.AsImplementedInterfaces()
.SingleInstance();
.AsImplementedInterfaces();
containerBuilder.RegisterAssemblyTypes(apiAssembly)
.AsSelf()
.SingleInstance();
.AsSelf();
}
}
}

View File

@ -37,15 +37,15 @@ namespace NzbDrone.Core
container.RegisterAssemblyTypes(assembly)
.Where(t => t.IsSubclassOf(typeof(IndexerBase)))
.As<IndexerBase>().SingleInstance();
.As<IndexerBase>();
container.RegisterAssemblyTypes(assembly)
.Where(t => t.IsSubclassOf(typeof(IndexerSearchBase)))
.As<IndexerSearchBase>().SingleInstance();
.As<IndexerSearchBase>();
container.RegisterAssemblyTypes(assembly)
.Where(t => t.IsSubclassOf(typeof(ExternalNotificationBase)))
.As<ExternalNotificationBase>().SingleInstance();
.As<ExternalNotificationBase>();
}
private static void InitDatabase(this ContainerBuilder container)
@ -56,7 +56,7 @@ namespace NzbDrone.Core
var appDataPath = environmentProvider.GetAppDataPath();
if (!Directory.Exists(appDataPath)) Directory.CreateDirectory(appDataPath);
container.Register(c => c.Resolve<IDbFactory>().Create(environmentProvider.GetNzbDroneDatabase())).As<IDatabase>().SingleInstance();
container.Register(c => c.Resolve<IDbFactory>().Create(environmentProvider.GetNzbDroneDatabase())).As<IDatabase>();
container.RegisterGeneric(typeof(BasicRepository<>)).As(typeof(IBasicRepository<>));
}

View File

@ -1,5 +1,4 @@
using System;
using System.Data;
using System.Data.SQLite;
using Marr.Data;
using NzbDrone.Core.Datastore.Migration.Framework;
@ -16,9 +15,13 @@ namespace NzbDrone.Core.Datastore
{
private readonly IMigrationController _migrationController;
public DbFactory(IMigrationController migrationController)
static DbFactory()
{
TableMapping.Map();
}
public DbFactory(IMigrationController migrationController)
{
_migrationController = migrationController;
}

View File

@ -1,4 +1,6 @@
using System.Reflection;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Reflection;
using FluentMigrator.Runner;
using FluentMigrator.Runner.Initialization;
using FluentMigrator.Runner.Processors.Sqlite;
@ -14,6 +16,8 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
{
private readonly IAnnouncer _announcer;
private static readonly HashSet<string> MigrationCache = new HashSet<string>();
public MigrationController(IAnnouncer announcer)
{
_announcer = announcer;
@ -21,6 +25,10 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
public void MigrateToLatest(string connectionString, MigrationType migrationType)
{
lock (MigrationCache)
{
if (MigrationCache.Contains(connectionString.ToLower())) return;
var assembly = Assembly.GetExecutingAssembly();
var migrationContext = new RunnerContext(_announcer)
@ -34,6 +42,9 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
var processor = factory.Create(connectionString, _announcer, options);
var runner = new MigrationRunner(assembly, migrationContext, processor);
runner.MigrateUp(true);
MigrationCache.Add(connectionString.ToLower());
}
}
}
}

View File

@ -1,6 +1,5 @@
using System;
using System.IO;
using System.Linq;
using Autofac;
using NLog;
using NzbDrone.Common;