views:

211

answers:

1

I'm building a asp.net mvc web application. And I'm running quartz in the asp.net context. I'm using fluent nhibernate for my or mappings. I'm building a simple job that goes writes an entry in the database.

    public void Execute(JobExecutionContext context)
    {

        ISession session = DataSourceConfiguration.GetSessionFactory().OpenSession();
        session.SaveOrUpdate(new JobLogEntry() { Created = DateTime.Now, Message = "Twitter feed read" });
        session.Close();
        session.Dispose();
    }

    public static ISessionFactory GetSessionFactory()
    {
        return Fluently.Configure()
          .Database(CurrentDataBaseConfiguration)
          .Mappings(m =>
            m.AutoMappings.Add(
              AutoMap.AssemblyOf<Entry>()
                .Where(t => t.Namespace == "QuickBlog.BlogModel.Entities")
            ))
          .BuildSessionFactory(); 
    }

Here is where the error occurs:

    public static IPersistenceConfigurer CurrentDataBaseConfiguration
    {
        get
        {
            if (_dataBaseConfiguration != null)
                return _dataBaseConfiguration;


                var config = MsSqlConfiguration.MsSql2005
                    .ConnectionString(c => c.FromConnectionStringWithKey("QuickBlogDB"))
                    .UseReflectionOptimizer()
                    .Cache(c => c.Not
                    .UseQueryCache())
                    .ShowSql(); 

                _dataBaseConfiguration = config;


            return _dataBaseConfiguration;
        }
    }

The problem is that c.FromConnectionStringWithKey("QuickBlogDB") is null or empty. How do I get a hold of the configuration info in the quartz.net job?

+1  A: 

First of all, you probably should not create your session factory inside your job. I would recommend of having a static class to hold session factory and initialize it in earlier stage, say applications Application_Start method.

It's more resource efficient (a lot) and makes it easier to debug problems as your app won't even start before configuration and preconditions are right.

Marko Lahma
Going to try this.
Emil C