Haris Bašić
Haris Bašić

Reputation: 1383

Moving from Ninject.MVC3 to StructureMap

I think this is very easy question, but I just started with ASP.NET in C#. I have following class in NinjectModule and I need your help how to do same thing in StructureMap.

using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using SimpleBlog.Core.Objects;
using NHibernate;
using NHibernate.Cache;
using NHibernate.Tool.hbm2ddl;
using Ninject;
using Ninject.Modules;
using Ninject.Web.Common;

public class RepositoryModule : NinjectModule
{
    public override void Load()
    {
        Bind<ISessionFactory>()
            .ToMethod
            (
                e =>
                    Fluently.Configure()
                    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c =>
                        c.FromConnectionStringWithKey("DefaultConnection")))
                    .Cache(c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>())
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Post>())
                    //.ExposeConfiguration(cfg => new SchemaExport(cfg).Execute(true, true, false))
                    .BuildConfiguration()
                    .BuildSessionFactory()
            )
            .InSingletonScope();

        Bind<ISession>()
            .ToMethod((ctx) => ctx.Kernel.Get<ISessionFactory>().OpenSession())
            .InRequestScope();
    }
}

Upvotes: 1

Views: 215

Answers (1)

PHeiberg
PHeiberg

Reputation: 29811

Provided I got the parentheses right, something like this should work:

ObjectFactory.Initialize(config => {
    config.For<ISessionFactory>().Singleton().Use(() => 
      Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c =>
        c.FromConnectionStringWithKey("DefaultConnection")))
        .Cache(c => c.UseQueryCache().ProviderClass<HashtableCacheProvider>())
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Post>())
        .BuildConfiguration()
        .BuildSessionFactory()));
    config.For<ISession>().HttpContextScoped()
      .Use(c => c.GetInstance<ISessionFactory>().OpenSession());
});

Upvotes: 1

Related Questions