Reputation: 1383
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
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