2008-10-06 3 views
4

Я создал приложение WinForm на компьютере с Windows, и приложение работает ok. Когда я пользователь nhibernate 1.2.1, приложение также работало на linux-машине с использованием моно, но теперь, когда я обновил приложение до nhibernate 2.0.1, он работает только в окнах. Я получаю ошибку: NHibernate.InvalidProxyTypeException: Следующие типы не могут быть использованы в качестве прокси: xxxx.Data.Dao.Credit: метод obj_address должен быть виртуальным ...... Может кто-нибудь помочь мне с Эта проблема?Nhibernate 2.0.1 с mono

ответ

0

Я также на моно пытается использовать NHibernate. Большинство форумов, похоже, говорят, что установка строки в виртуальную будет устранять проблему, но это не сработало для меня. Что любопытно, что моя ошибка почти идентична -

«» метод obj_address должен быть виртуальным

Это заставляет меня думать, что прокси-сервер «адрес» зарезервирован для чего-то еще. Попробуйте изменить название этого столбца?

1

Вы можете попробовать и отключить проверку подлинности прокси-сервера NHibernate. похоже, не работает с моно.

Вы можете сделать это, добавив: <property name="use_proxy_validator">false</property> в разделе приложения/web.config nhibernate.

Для примера CONFIG с этим свойством, смотрите здесь: http://www.mail-archive.com/[email protected]/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> 
Смежные вопросы