1

Windows Server 2003 で Visual Studio 2005 と NHibernate-2.1.2.GA を使用しています。

ASP.net プログラムで oracle を NHibernate に接続しようとしています。

オラクルのバージョンを取得するには、次の SQL を実行します。select * from v$version

結果は、Oracle のバージョンが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>

ここで、Oracle に接続してクエリ 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.

これは初心者の問題であることはわかっていますが、私は初心者です。あなたのアイデアに感謝します...

4

2 に答える 2

2

org.から削除してみてくださいdialect

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

詳細については、公式ドキュメントからNHibernateSQLダイアレクトを確認してください。

于 2012-06-26T14:41:13.600 に答える
0

神に感謝します。最後に、この問題を修正します。Thers は、上に貼り付けるのを忘れた結果のメッセージです。次のようになります。

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

私の.Net2.0のバージョンが古いのが原因です。次に、.Net2.0 SP1 をインストールすると、問題が修正されました。クラウディオ・レディに感謝します!

于 2012-06-27T08:43:34.110 に答える