2011-05-23 31 views
2

我的問題:功能NHibernate 3和Oracle.DataAccess

我想使用Oracle.DataAccess.Client提供商與NHibernate(流利),我將其配置如下:

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

,我有這樣的錯誤:

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

我已經與當地的副本= TRUE添加引用Oracle.Dataaccess DLL(ODAC),但錯誤依然存在......

有什麼建議嗎?

回答

4

這裏的工作代碼片段:

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"); 
     }); 
} 

而不指定供應商,它會自動選擇甲骨文數據訪問的。

編輯:把它撿起來自動完成,我只是在我的連接字符串:

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

你確定它使用Oracle數據訪問?是不是使用System.Data.OracleClient? – user756037 2011-05-23 14:20:23

+0

我確定。如果我刪除了參考文獻,它會專門詢問它。 Fyi,你不需要System.Data.OracleClient作爲參考。 – rebelliard 2011-05-23 14:23:12

+0

糟糕,你是對的。查看我的更新。 :) – rebelliard 2011-05-23 14:24:55