2011-05-23 4 views
2

ma question:Courant NHibernate 3 et Oracle.DataAccess

Je suis en train d'utiliser Oracle.DataAccess.Client fournisseur avec NHibernate (courant), et je configuré comme suit:

Fluently.Configure().Database(OracleClientConfiguration.Oracle10.Provider("Oracle.DataAccess.Client").ConnectionString(c => c.FromConnectionStringWithKey("ORACLE1"))). 

et j'ai cette erreur:

"Could not load type Oracle.DataAccess.Client. Possible cause: no assembly name specified.":" 

J'ai déjà ajouter une référence à Oracle.Dataaccess dll (ODAC) avec copie locale = true, mais l'erreur persiste ...

Des suggestions?

Répondre

4

Voici un extrait de code de travail:

public static void InitializeNHibernate() 
{ 
    var configurer = (OracleClientConfiguration.Oracle10.ShowSql().ConnectionString(c => 
       c.FromConnectionStringWithKey("development")) 
       .DefaultSchema("myschema") 
       .UseReflectionOptimizer() 
       .Cache(c => 
         c.ProviderClass<SysCacheProvider>() 
         .UseQueryCache())); 

    var cfg = Fluently.Configure() 
     .Database(configurer) 
     .Mappings(m => 
         { 
          m.FluentMappings 
           .AddFromAssemblyOf<Employee>() 
           .Conventions.Add<OracleDateTimeTypeConvention>(); 

          m.HbmMappings 
           .AddFromAssemblyOf<Employee>(); 
         }) 
     .ExposeConfiguration(configuration => 
     { 
      configuration.SetProperty(Environment.Hbm2ddlKeyWords, "auto-quote"); 
      configuration.SetProperty(Environment.GenerateStatistics, "true"); 
      configuration.SetProperty(Environment.CurrentSessionContextClass, "web"); 
      configuration.SetProperty(Environment.CommandTimeout, "60"); 
     }); 
} 

Sans spécifier un fournisseur, il sélectionne automatiquement Oracle DataAccess vers le haut.

Edit: Il ne pas ramasser automatiquement, je viens sur ma chaîne de connexion:

<add name="development" connectionString="Data Source=XXX;User ID=yyy;Password=zzz;" providerName="Oracle.DataAccess.Client"/> 
+0

Vous êtes sûr qu'il utilise Oracle DataAccess ?? n'est-ce pas using System.Data.OracleClient? – user756037

+0

Je suis sûr.Si je supprime la référence, il va demander spécifiquement pour cela. Fyi, vous n'avez pas besoin de System.Data.OracleClient comme référence. – rebelliard

+0

Oups, vous avez raison. Voir ma mise à jour :) – rebelliard