Fluent NHibernate e quarzo
-
16-09-2019 - |
Domanda
Sto costruendo un'applicazione web mvc asp.net. E sto correndo al quarzo nel contesto asp.net. Sto usando NHibernate fluente per i miei o mappature. Sto costruendo un semplice lavoro che va scrive una voce nel 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();
}
Qui è dove si verifica l'errore:
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;
}
}
Il problema è che c.FromConnectionStringWithKey ( "QuickBlogDB") è nullo o vuoto. Come posso ottenere una sospensione di informazioni di configurazione nel lavoro quartz.net?
Soluzione
Prima di tutto, probabilmente non dovrebbe creare la fabbrica sessione all'interno del vostro lavoro. Suggerirei di avere una classe statica per tenere fabbrica sessione e inizializzare in fase precoce, dicono le applicazioni Application_Start metodo.
E 'più efficiente delle risorse (molto) e rende più facile il debug problemi come la vostra applicazione non sarà nemmeno iniziare prima della configurazione e condizioni sono a destra.