2008-10-06 11 views
4

J'ai construit mon application WinForm sur Windows machine et l'application fonctionne ok. Lorsque je nhibernate utilisateur 1.2.1 l'application a également travaillé sur linux machine en utilisant mono, mais maintenant, quand j'ai mis à jour l'application à nhibernate 2.0.1 cela fonctionne seulement dans Windows. J'ai obtiens l'erreur: NHibernate.InvalidProxyTypeException: Les types suivants ne peuvent pas être utilisés comme procurations: xxxx.Data.Dao.Credit: méthode obj_address doit être virtuelle ...... Quelqu'un peut-il me aider ce problème?Nhibernate 2.0.1 avec mono

Répondre

0

Je suis aussi sur mono essayer d'utiliser NHibernate. La plupart des forums semblent dire que la mise en place de la chaîne virtuelle va résoudre le problème, mais cela n'a pas fonctionné pour moi. Ce qui est curieux est que mon erreur est presque identique -

« » méthode obj_address doit être virtuelle

Cela me fait penser à la procuration « adresse » est réservé pour autre chose. Essayez de changer le nom de cette colonne?

1

Vous pouvez essayer de désactiver le validateur de proxy NHibernate Config. il semble ne pas fonctionner avec mono. Vous pouvez le faire en ajoutant: <property name="use_proxy_validator">false</property> dans votre section app/web.config nhibernate.

Pour un exemple config avec cet ensemble immobilier, voir ici: http://www.mail-archive.com/[email protected]/msg02109.html

ou modifier ceci:

<?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>