2012-06-26 2 views
1

Я использую Visual Studio 2005 с NHibernate-2.1.2.GA в Windows Server 2003.Не удалось создать экземпляр класса говор NHibernate.Dialect.Oracle9iDialect

Я пытаюсь соединить оракула с NHibernate в моей ASP.net программе.

Чтобы получить версию моего оракула, я запустить этот SQL: select * from v$version

Результат показывает версию оракул oracle9i.

Итак, я пишу NHibernate.cfg.xml так:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > 
    <session-factory> 
     <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
     <property name="connection.connection_string"> 
      Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) 
      (CONNECT_DATA=(SERVICE_NAME=MYORACLE))); 
      user id=team;password=team; 
     </property> 
     <property name="adonet.batch_size">10</property> 
     <property name="show_sql">true</property> 
     <property name="dialect">NHibernate.Dialect.Oracle9iDialect</property> 
     <property name="use_outer_join">true</property> 
     <property name="command_timeout">10</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> 
     <mapping assembly="NHibernateSample.Domain"/> 
     </session-factory> 
    </hibernate-configuration> 

Теперь, когда я запускаю тестовый блок, который попытается подключиться оракула и преобразования приложений SQL-запроса:

private ISession _session; 
    private SessionManager _helper; 
    private NHibernateSample _sample; 
    public void TestFixtureSetup() 
    { 
      _helper = new SessionManager(); 
     } 
     public void Setup() 
     { 
      _session = _helper.GetSession(); 
      _sample = new NHibernateSample(_session); 
     } 
     [NUnit.Framework.Test] 
     public void GetCustomerById1Test() 
     { 
      TestFixtureSetup(); 
      Setup(); 
      NHibernateSample _sample = new NHibernateSample(_session); 
      Assert.AreEqual(1, _sample.GetCustomerById(1).Id); 
     } 

он сообщает ошибки, подобные следующие:

Test 'NHibernateSample.Data.Test.NHibernateSampleFixture.GetCustomerById1Test' failed: NHibernate.MappingException : Could not compile the mapping document: NHibernateSample.Domain.Mappings.Customer.hbm.xml 
    ----> NHibernate.HibernateException : Could not instantiate dialect class NHibernate.Dialect.Oracle9iDialect 
    ----> System.TypeLoadException : Could not load type org.NHibernate.Dialect.Oracle9iDialect. Possible cause: no assembly name specified. 

Я знаю, что это проблема новичков, е! Я ценю ваши идеи ...

ответ

2

Try снова удаление org. из dialect

<property name="dialect">NHibernate.Dialect.Oracle9iDialect</property> 

Проверка NHibernate SQL Dialects из официальной документации для получения более подробной информации.

+0

Я редактирую xml, как вы указываете, но результат тот же! –

+0

@ user1201399: так теперь ошибка 'System.TypeLoadException: Не удалось загрузить тип NHibernate.Dialect.Oracle9iDialect' правильно? Какую версию NHibernate вы используете? –

+0

Да, результат подобен тому, что вы говорите. Моя NHibernate версия NHibernate-2.1.2.GA –

0

Благодарю Бога, наконец, я исправлю эту проблему. Thers это сообщение в результате которой я забыл вставить выше, это так:

未能从程序集“mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.DateTimeOffset” 

Это вызвано тем, что моя .Net2.0 версия устарела. Затем я устанавливаю .Net2.0 SP1 и проблема исправлена! Спасибо Клаудио Реди все равно!