Свободно владеет Nhibernate и кварцем
-
16-09-2019 - |
Вопрос
Я создаю asp.net веб-приложение mvc.И я запускаю quartz в контексте asp.net.Я использую fluent nhibernate для своих сопоставлений or.Я создаю простое задание, которое выполняет запись записи в базе данных.
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();
}
Вот где возникает ошибка:
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;
}
}
Проблема в том, что c.FromConnectionStringWithKey("QuickBlogDB") имеет значение null или пустой.Как мне получить доступ к информации о конфигурации в задании quartz.net?
Решение
Прежде всего, вам, вероятно, не следует создавать свою фабрику сеансов внутри вашей работы.Я бы рекомендовал иметь статический класс для хранения фабрики сеансов и инициализировать его на более ранней стадии, скажем, методом Application_Start приложения.
Это более ресурсоэффективно (намного) и упрощает отладку проблем, поскольку ваше приложение даже не запустится до тех пор, пока не будут созданы правильные настройки и предварительные условия.