2012-02-02 3 views
3

우리는 Validators 프로젝트로 NHibernate와 Castle을 사용하여 프로젝트를 빌드하고 있습니다. 모든 최신 버전을 지원하기 위해 노력하고 있습니다. 오류없이 작동하는 응용 프로그램을 얻었으나 몇 가지 단원 테스트에서 예외가 발생합니다. 이 테스트는 데이터베이스에 실제로 접근하지 않고 매핑 된 엔티티 주변의 기능을 테스트하는 테스트입니다. 내가 거기에 구성 매핑이Nhibernate.Util은 구성 라인이 구성에 존재할 때 ProxyFactoryFactoryNotConfiguredException을 발생시킵니다.

<?xml version="1.0" encoding="utf-8" ?> 
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory name="Linx2"> 
    <property 
     name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property> 
     <property name="dialect">Linx2.Common.Framework.PostgreSQL83Dialect, 
     Linx2.Common.Framework</property> 
    <property name="connection.connection_string">[Hidden so I don't get fired.]</property> 
     <property name="adonet.batch_size">10</property> 
    <property name="show_sql">false</property> 
    <property name="use_outer_join">true</property> 
    <property name="command_timeout">60</property> 
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> 
     <property name="proxyfactory.factory_class"> 
     NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle 
     </property> 
     <property name="connection.release_mode">after_transaction</property> 
     <mapping assembly="NHibernate.Collection.Observable" /> 
    </session-factory> 
    </hibernate-configuration> 

, 그리고 응용 프로그램에서 작동합니다

NHibernate.Bytecode.ProxyFactoryFactoryNotConfiguredException: 
    The ProxyFactoryFactory was not configured. 
    Initialize 'proxyfactory.factory_class' property of the session-factory 
    configuration section with one of the available NHibernate.ByteCode providers. 
    Example: 
    <property name='proxyfactory.factory_class'> 
    NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu 
    </property> 
    Example: 
    <property name='proxyfactory.factory_class'> 
    NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle 
    </property> 
    [Continues down stack trace...] 

다음은 내 설정 파일입니다. 나는 또한 NHibernate.ByteCode dll을 포함하고있다. 그러나이 테스트에서는 무시됩니다. 개별 테스트에서 수동으로 구성을 시작하고 구성을 항목이있는 중반 테스트를 중단하고 확인했습니다. 그러나 IsInitialized 호출의 아래 코드에서 예외가 throw됩니다.

if (NHibernateUtil.IsInitialized(ChildAssociations)) 
       { 
        ChildAssociations.ForEach(x => isValid = isValid && x.Element.IsValid(validatedObjects)); 
       } 

이전에는 2.2 용 NHibernate 빌드에서 문제없이 작동했습니다. 어떤 도움이라도 대단히 감사하겠습니다. 나는 지난 4 시간 동안 그것에 머리를 치고 있었다.

답변

1

분명히 NHibernateUtil은 구성을 초기화 할 필요가있을뿐만 아니라 세션 팩토리를 구축해야합니다. 수동으로 config를 실행하고 테스트에서 세션 팩토리를 작성하여 작동시킬 수있었습니다. 세션 팩토리가 직접 작성되기 때문에 앱에서 문제가되지 않았습니다.

var cfg = new NHibernate.Cfg.Configuration().Configure(); 
var sessionFactory = cfg.BuildSessionFactory();