【问题标题】:Fluent NHibernate 3 and Oracle.DataAccessFluent NHibernate 3 和 Oracle.DataAccess
【发布时间】:2011-05-23 09:47:20
【问题描述】:

我的问题:

我正在尝试将Oracle.DataAccess.Client Provider 与 NHibernate (Fluent) 一起使用,我将其配置如下:

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.":"

我已经添加了对 Oracle.Dataaccess dll (ODAC) 的引用,其中 copy local = true,但错误仍然存​​在...

有什么建议吗?

【问题讨论】:

    标签: oracle nhibernate odp.net fluent


    【解决方案1】:

    这是一个工作代码 sn-p:

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

    在不指定提供者的情况下,它会自动选择 Oracle DataAccess。

    编辑: 它确实不会自动拾取它,我只是将它放在我的连接字符串中:

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

    【讨论】:

    • 你确定它使用Oracle DataAccess??不是用 System.Data.OracleClient 吗?
    • 我确定。如果我删除参考,它会专门要求它。仅供参考,您不需要 System.Data.OracleClient 作为参考。
    • 我在连接字符串中也尝试了 providerName="Oracle.DataAccess.Client",但它似乎被忽略了。
    • 您是如何将 Oracle.DataAccess.Client 放在您的盒子上的? XCOPY 或安装,因为必须在配置文件中引用 ADO.NET 提供程序(参见 machine.config 以了解 SQL Server 提供程序的示例)。
    • 已安装。它没有显示在我的 选项中,所以我手动添加了它。
    猜你喜欢
    • 1970-01-01
    • 2012-01-23
    • 2011-07-19
    • 2010-11-29
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多