WedX - журнал о программировании и компьютерных науках

Ошибка метода не найдена в средстве интеграции Castle Windsor / NHibernate после обновления версии

Следующее исключение наблюдается после того, как мы обновили Castle Windsor с 2.5.2.0 до Castle Windsor 3.3, который является последней версией:

Метод не найден: 'Void Castle.Core.DependencyModel..ctor (Castle.Core.DependencyType, System.String, System.Type, Boolean)

Трассировка стека:

*[MissingMethodException: Method not found: 'Void Castle.Core.DependencyModel..ctor(Castle.Core.DependencyType, System.String, System.Type, Boolean)'.]
   Castle.Facilities.NHibernateIntegration.Internal.NHSessionComponentInspector.ProcessModel(IKernel kernel, ComponentModel model) +0
   Castle.MicroKernel.ModelBuilder.<>c__DisplayClass6.<BuildModel>b__4(IContributeComponentModelConstruction c) +60
   System.Collections.Generic.List`1.ForEach(Action`1 action) +11702442
   Castle.MicroKernel.ModelBuilder.DefaultComponentModelBuilder.BuildModel(IComponentModelDescriptor[] customContributors) +223
   Castle.MicroKernel.Registration.ComponentRegistration`1.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) +154
   Castle.MicroKernel.DefaultKernel.Register(IRegistration[] registrations) +179
   Castle.Facilities.NHibernateIntegration.NHibernateFacility.RegisterDefaultConfigurationBuilder() +398
   Castle.Facilities.NHibernateIntegration.NHibernateFacility.RegisterComponents() +221
   Castle.Facilities.NHibernateIntegration.NHibernateFacility.Init() +266
   Castle.MicroKernel.Facilities.AbstractFacility.Castle.MicroKernel.IFacility.Init(IKernel kernel, IConfiguration facilityConfig) +64
   Castle.MicroKernel.DefaultKernel.AddFacility(String key, IFacility facility) +381
   Castle.MicroKernel.DefaultKernel.AddFacility(IFacility facility) +124
   Castle.MicroKernel.DefaultKernel.AddFacility(Action`1 onCreate) +165
   Castle.MicroKernel.DefaultKernel.AddFacility(String key, Action`1 onCreate) +85
   Castle.Windsor.WindsorContainer.AddFacility(String idInConfiguration, Action`1 configureFacility) +113
   IoC.IoCBootstrapper.CreateBaseContainer(String configPath) 
   IoC.IoCBootstrapper.InitializeForWeb(String configPath) 
   Web.Global_asax.Application_Start(Object sender, EventArgs e)*

Это пример кода, который настраивает NHibernate:

var container = new WindsorContainer();
container.Kernel.ConfigurationStore.AddFacilityConfiguration("nHibernateFacility", Init());
container.AddFacility<NHibernateFacility>("nHibernateFacility", f => f.ConfigurationBuilder<FluentNHibernateConfigurationBuilder>());


public static MutableConfiguration Init(ProviderSchema schema, int factoryCount)
{
var facility = new MutableConfiguration("facility");
facility.Attributes.Add("id", "nhibernatefacility");
facility.Attributes.Add("isWeb", "true");
facility.Attributes.Add("type", "Castle.Facilities.NHibernateIntegration.NHibernateFacility, Castle.Facilities.NHibernateIntegration");
CreateFactory(facility, factoryCount, schema);
 return facility;
}

public static void CreateFactory(MutableConfiguration facility, int id, ProviderSchema schema)
{
var factory = facility.CreateChild("factory");
factory.Attributes.Add("id", string.Format("nhibernate.factory{0}", id));
factory.Attributes.Add("alias", schema.Name);
 var settings = factory.CreateChild("settings");

settings.CreateItem("connection.driver_class", schema.ProviderFactory)
.CreateItem("connection.connection_string", schema.ProviderDatabase)
.CreateItem("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
.CreateItem("dialect", "NHibernate.Dialect.MsSql2005Dialect")
.CreateItem("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache")
.CreateItem("cache.use_second_level_cache", "true")
.CreateItem("cache.default_expiration", "600")
.CreateItem("adonet.batch_size", "100")
.CreateItem("show_sql", "false");
}

Исключение создается при вызове container.AddFacility ().

Ниже приведен список версий сборки Castle Windsor и NHibernate, которые в настоящее время упоминаются в проектах:

  • Castle.Core 3.3.0
  • Замок.Windsor 3.3.0
  • Castle.Facilities.NHibernateIntegration 1.1.0.39
  • Castle.Services.Transaction 2.5.0.0
  • NHibernate 3.1.0.4000
  • FluentNHibernate 2.0.0.0
  • Iesi.Collections 2.1.0.4000

Какая версия Castle Windsor совместима с NHibernate Integration Facility? Есть ли исправление, которое я могу загрузить для решения этой проблемы?

Я нашел аналогичный вопрос по stackoverflow, и проблема была зарегистрирована в трекере проектов для разрешения. Но это был Castle Windsor версии 3.0 еще в декабре 2011 года, см. Ссылку ниже.

Castle Windsor 3 + Fluent NHibernate + Castle.NHibernate.Integration

Исправление не вошло в Castle.Core 3.3.0?

Или мне что-то здесь не хватает, любая помощь / предложение очень ценится.

Спасибо


Ответы:


1

Средство NHibernateIntegration 1.1.0 не поддерживает Castle Windsor 3. The Castle Project не поддерживает это средство в течение последних 4 лет после ухода последнего сопровождающего. Issue FACILITIES-156, авторизован наш старый трекер проблем умер после того, как ни один из пользователей, создавших собственный форк, не отправил запрос на перенос, поэтому никакие исправления не были применены.

См. Эту проблему в нашем трекере проблем, который был зарегистрирован в сентябре, со ссылками на исходный код, который все еще находится в репозитории Git, и советами по его оживлению: https://github.com/castleproject/Windsor/issues/101

14.12.2015
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]