NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException - PullRequest
4 голосов
/ 20 марта 2010

В моем автозагрузке настроен следующий код

IDictionary<string, string> properties = new Dictionary<string, string>();

properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver");
properties.Add("dialect", "NHibernate.Dialect.MsSql2005Dialect");
properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");
properties.Add("connection.connection_string", "Data Source=ZEUS;Initial Catalog=mydb;Persist Security Info=True;User ID=sa;Password=xxxxxxxx");
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
source.Add(typeof(ActiveRecordBase), (IDictionary<string, string>) properties);

Assembly asm = Assembly.Load("Repository");

Castle.ActiveRecord.ActiveRecordStarter.Initialize(asm, source);

Я получаю следующую ошибку:

failed: NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException : Unable to load type 'NNHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle' during configuration of proxy factory class.

Возможные причины:

  • Сборка поставщика NHibernate.Bytecode не была развернута.
  • TypeName, использованный для инициализации свойства 'proxyfactory.factory_class' раздела фабрики сеансов, сформирован неправильно.

Я прочитал и прочитал, я ссылаюсь на Все сборки , перечисленные , и я в полном недоумении, что попробовать дальше.

Castle.ActiveRecord.dll
Castle.DynamicProxy2.dll
Iesi.Collections.dll
log4net.dll
NHibernate.dll
NHibernate.ByteCode.Castle.dll
Castle.Core.dll.

Я на 100% уверен, что сборка в мусорном ведре. У кого-нибудь есть идеи?

Ответы [ 2 ]

5 голосов
/ 20 марта 2010

Эта проблема возникает, когда NHibernate.ByteCode.Castle.dll был собран с другой целевой платформой в качестве вашего проекта. Чтобы проверить это, измените целевую платформу вашей программы с одного или нескольких из следующих:

  • x64 до x86
  • x86 до x64
  • «Любой процессор» до x86
  • «Любой процессор» до x64

Если кто-то из них решит вашу проблему, то вы знаете, что вам просто нужно синхронизировать DLL и вашу целевую платформу.

0 голосов
/ 15 мая 2010

У меня также была эта проблема, мое решение было добавить в сборку, которая создает сеанс, следующий за кодом.

private NHibernate.ByteCode.Castle.ProxyFactoryFactory requiredButNeverUsed;
...