У меня точно такая же настройка с проектом FOSS, с которым я связан. Он содержит все (даже Controllers и Global.asax.cs) в библиотеке классов «Core».
Существует множество допустимых решений, одно из которых я выбрал для создания класса Settings, который по сути представляет собой набор статических свойств, внутри которых у вас есть:
public static string ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["MYAPP"].ConnectionString; }
}
Примечание: убедитесь, что в вашей библиотеке классов добавлена System.Configuration в качестве ссылки.
Внутри вашего Приложения (класса, производного от HttpApplication) вы передаете настройки, хотя ничто не мешает вам тесно связать установку NH с классом настроек:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
SetupNHibernate();
}
public virtual void SetupNHibernate()
{
NHibernateRepository.Current.Configure(RoadkillSettings.DatabaseType, Settings.ConnectionString, false, Settings.CachedEnabled);
}
Если это вам пригодится, источник здесь.