4

Windows マシンで WinForm アプリをビルドしましたが、アプリは正常に動作しています。nhibernate 1.2.1 を使用すると、アプリは mono を使用して Linux マシンでも動作しましたが、アプリを nhibernate 2.0.1 にアップグレードすると、Windows でのみ動作します。エラーが発生しました: NHibernate.InvalidProxyTypeException: The following types may not be used as proxies: xxxx.Data.Dao.Credit : method obj_address should be virtual ...... 誰でもこの問題を解決できますか?

4

3 に答える 3

1

NHibernateConfigプロキシバリデーターを無効にしてみてください。モノでは動作しないようです。

<property name="use_proxy_validator">false</property> これを行うには、app / web.confignhibernateセクションに:を追加 します。

このプロパティが設定された設定例については、http: //www.mail-archive.com/nhusers@googlegroups.com/msg02109.htmlを参照してください。

またはこれを変更します:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="hibernate-configuration"
             type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
  </configSections>

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
        <!--
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">Data Source=YOUR_DB_SERVER;Database=Northwind;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD;</property>
      <property name="connection.isolation">ReadCommitted</property>
      <property name="default_schema">Northwind.dbo</property>
          -->
        <!--
      <property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.SQLiteDriver</property>
      <property name="connection.connection_string">Data Source=nhibernate.db;Version=3</property>
      <property name="query.substitutions">true=1;false=0</property>
          -->
          <!-- mysql
      <property name="dialect">NHibernate.Dialect.MySQLDialect</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
      <property name="connection.connection_string">Database=test</property>
          -->
          <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
          <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
          <property name="connection.connection_string">Server=localhost;database=test;User id=jrwren;password=yourpasswordhere.</property>
          <property name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
          <property name="use_proxy_validator">false</property>
      <!-- HBM Mapping Files -->
      <mapping assembly="Test.exe" />
    </session-factory>
  </hibernate-configuration>

</configuration>
于 2009-02-10T04:08:25.693 に答える
0

私はNHibernateを使おうとしているモノでもあります。ほとんどのフォーラムは、文字列を仮想に設定すると問題が解決すると言っているようですが、これは私にとってはうまくいきませんでした。興味深いのは、私のエラーがほぼ同じであることです -

"" メソッド obj_address は仮想アドレスでなければなりません

これは、プロキシの「アドレス」が他の何かのために予約されていると私に思わせます。この列の名前を変更してみてください。

于 2008-12-31T02:56:35.213 に答える
0

これは興味深いかもしれません:

http://softwaredevscott.spaces.live.com/blog/cns!1A9E939F7373F3B7!251.entry

于 2008-10-06T08:00:04.300 に答える